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

MYSQL:अद्वितीय मानों का चयन करते समय फ़ील्ड मानों का योग चुनें?

अगर मैं सही ढंग से समझूं, तो did_i_buy कॉलम का अर्थ है "क्या टॉम ने खरीदा"। आप इसे इस तरह कर सकते हैं:

SELECT
  Items.item_id,
  item_name,
  COUNT(CASE WHEN purchase_status='bought' THEN 1 END) as number_bought,
  MAX(CASE WHEN purchase_status='bought' AND user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
GROUP BY Items.item_id

वैकल्पिक रूप से (एक CASE कथन, नीचे टिप्पणियाँ देखें)

SELECT
  Items.item_id,
  item_name,
  COUNT(purchase_status='bought') as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id

और एक और ट्वीक: WHERE . के कारण खंड, COUNT केवल पंक्तियों को देखने जा रहा है जहां purchase_status='bought' , इसलिए स्थिति की जाँच करने वाले व्यंजक को छोड़ा जा सकता है (ऊपर से एकमात्र परिवर्तन पंक्ति 4 में है):

SELECT
  Items.item_id,
  item_name,
  COUNT(*) as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id


  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. SQL क्वेरी MySQL में तालिका बनाने के लिए

  3. MySQL से Firebase में डेटा माइग्रेट करना

  4. यह पीडीओ तैयार बयान झूठा रिटर्न देता है लेकिन एक त्रुटि नहीं फेंकता है

  5. आंशिक शब्दों के साथ MySQL पूर्ण पाठ खोज