Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql सबक्वेरी में अज्ञात कॉलम

मैं एक MySQL विशेषज्ञ नहीं हूं (एमएस एसक्यूएल में इसे आसान किया जा सकता है), और आपका प्रश्न मेरे लिए थोड़ा अस्पष्ट दिखता है, लेकिन ऐसा लगता है कि आप पिछले 5 आइटमों का औसत प्राप्त करने का प्रयास कर रहे हैं।

अगर आपके पास बिना अंतराल वाली आईडी . है , यह आसान है:

select
    p.id,
    (
        select avg(t.deposit)
        from products as t
        where t.itemid = 1 and t.id >= p.id - 5 and t.id < p.id
    ) as avgdeposit
from products as p
where p.itemid = 1
order by p.id desc
limit 15

यदि नहीं , तो मैंने इस क्वेरी को इस तरह करने की कोशिश की है

select
    p.id,
    (
        select avg(t.deposit)
        from (
            select tt.deposit
            from products as tt
            where tt.itemid = 1 and tt.id < p.id
            order by tt.id desc
            limit 5
        ) as t
    ) as avgdeposit
from products as p
where p.itemid = 1
order by p.id desc
limit 15

लेकिन मुझे अपवाद मिला है Unknown column 'p.id' in 'where clause' . ऐसा लगता है कि MySQL उपश्रेणियों के नेस्टिंग के 2 स्तरों को संभाल नहीं सकता है। लेकिन आप offset के साथ पिछले 5 आइटम प्राप्त कर सकते हैं , इस तरह:

select
    p.id,
    (
        select avg(t.deposit)
        from products as t
        where t.itemid = 1 and t.id > coalesce(p.prev_id, -1) and t.id < p.id
    ) as avgdeposit
from 
(
    select
        p.id,
        (
            select tt.id
            from products as tt
            where tt.itemid = 1 and tt.id <= p.id
            order by tt.id desc
            limit 1 offset 6
        ) as prev_id
    from products as p
    where p.itemid = 1
    order by p.id desc
    limit 15
) as p

sql fiddle डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक विशिष्ट स्थिति के आधार पर mysql निर्यात तालिका

  2. डेटाबेस स्तर पर ही क्वेरी के माध्यम से अनक्रमबद्ध करें

  3. JPA के साथ MySql डेटाबेस के ऑटो-इंक्रीमेंट मान को रीसेट करना

  4. एक mysql तालिका में html कोड सम्मिलित करना

  5. GPS निर्देशांक के लिए मुझे अपने डेटाबेस में कितने महत्वपूर्ण अंक संग्रहीत करने चाहिए?