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

MySql 5.7 ORDER BY क्लॉज ग्रुप बाय क्लॉज में नहीं है और इसमें गैर-समेकित कॉलम है

यह आपकी क्वेरी है:

SELECT p.title, COUNT(t.qty) AS total 
-------^
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY t.item
---------^
ORDER BY t.created DESC;
---------^

पॉइंट टू प्लेसेस में दिक्कतें हैं। ध्यान दें कि SELECT और GROUP BY अलग कॉलम का जिक्र कर रहे हैं। एक LEFT JOIN . में , आप (काफ़ी हद तक) हमेशा पहले . में किसी चीज़ से एकत्रित करना चाहते हैं तालिका, दूसरी नहीं।

ORDER BY एक और समस्या है। आप इस कॉलम से एकत्र नहीं कर रहे हैं, इसलिए आपको यह तय करना होगा कि आपको कौन सा मूल्य चाहिए। मैं अनुमान लगा रहा हूँ MIN() या MAX() :

SELECT p.title, COUNT(t.qty) AS total 
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY p.title
ORDER BY MAX(t.created) DESC;

मैं वह COUNT(t.qty) भी जोड़ूंगा संदिग्ध है। आम तौर पर qty "मात्रा" को संदर्भित करता है और आप जो चाहते हैं वह योग है:SUM(t.qty)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निर्दिष्ट संख्या को छोड़कर तालिका से पंक्तियां हटाएं (पंक्तियों की सीमित संख्या)

  2. Column1 <=X <=Column2 को संतुष्ट करने वाली पंक्तियों की खोज करने वाली SQL क्वेरी बहुत धीमी है

  3. MySQL इंसर्ट का प्रदर्शन एक बड़ी टेबल पर खराब हो जाता है

  4. प्रदर्शन को बढ़ावा देने के लिए mysql

  5. CSV से mySQL डेटाबेस में डेटा लोड करें जावा+हाइबरनेट+स्प्रिंग