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

क्या कुल MySQL फ़ंक्शन हमेशा एक पंक्ति लौटाते हैं?

आपको GROUP BY का उपयोग करना होगा जैसे अपना वांछित परिणाम प्राप्त करने के लिए:

SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders 
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id

यह आपके परिणामों को समूहीकृत करेगा। ध्यान दें कि चूंकि मुझे लगता है कि order_id और part_id एक यौगिक PK है, SUM(cost) उपरोक्त में संभवतः = cost होगा (चूंकि आप दो क्षेत्रों के संयोजन से एक समूह बनाते हैं जो अद्वितीय होने की गारंटी है। नीचे सहसंबद्ध उपश्रेणी इस सीमा को पार कर जाएगी)।

लाई गई सभी गैर-समग्र पंक्तियों को GROUP BY . में निर्दिष्ट करने की आवश्यकता है पंक्ति।

अधिक जानकारी के लिए, आप GROUP BY . के बारे में एक ट्यूटोरियल पढ़ सकते हैं यहाँ:

संपादित करें: यदि आप किसी कॉलम को एग्रीगेट और नॉन-एग्रीगेट दोनों के रूप में उपयोग करना चाहते हैं, या यदि आपको अपने समूहों को अलग करने की आवश्यकता है, तो आपको इस तरह एक सबक्वेरी का उपयोग करना होगा:

SELECT
or1.order_id,
or1.cost,
or1.part_id,
(
  SELECT SUM(cost)
  FROM orders or2
  WHERE or1.order_id = or2.order_id
  GROUP BY or2.order_id
) AS total
FROM orders or1
WHERE or1.order_date BETWEEN xxx AND yyy



  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 में SUM और CONCAT का अजीब व्यवहार

  2. एंटिटी फ्रेमवर्क के साथ कनेक्शन स्ट्रिंग कैसे सेट करें

  3. कौन सा सबसे तेज़ है? `टेबल` से SQL_CALC_FOUND_ROWS चुनें, या COUNT(*) चुनें

  4. दो तालिकाओं से दो स्तंभों को एक में मिलाएं

  5. लार्वा होने:कॉलम नहीं मिला