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

MySQL:क्या मैं लेफ्ट जॉइन कर सकता हूं और जॉइन टेबल से केवल एक पंक्ति खींच सकता हूं?

मुझे जो समझ में आया उसे संक्षेप में बताएं:आप प्रत्येक टिकट और उसके अंतिम समाधान का चयन करना चाहेंगे।

मुझे इस तरह के प्रश्न के लिए निम्नलिखित पैटर्न का उपयोग करना पसंद है क्योंकि यह सबक्वायरी पैटर्न से बचा जाता है और इसलिए यह अच्छा है जहां प्रदर्शन की आवश्यकता होती है। दोष यह है कि इसे समझना थोड़ा मुश्किल है:

SELECT
  t.*,
  s1.*
FROM tickets t
INNER JOIN solutions s1 ON t.id = s1.ticket_id
LEFT JOIN solutions s2 ON s1.ticket_id = s2.ticket_id AND s2.id > s1.id
WHERE s2.id IS NULL;

मैंने बेहतर समझ के लिए केवल पैटर्न का दिल लिखा है।

कुंजियाँ हैं:

  • solutions . में से बायां जॉइन s1.ticket_id = s2.ticket_id . के साथ तालिका शर्त:यह GROUP BY ticket_id . का अनुकरण करता है ।

  • शर्त s2.id > s1.id :यह "मैं केवल अंतिम समाधान चाहता हूं" के लिए SQL है, यह MAX() का अनुकरण करता है . मुझे लगता है कि आपके मॉडल में, the last मतलब with the greatest id लेकिन आप यहां तिथि पर एक शर्त का उपयोग कर सकते हैं। ध्यान दें कि s2.id < s1.id आपको पहला समाधान देगा।

  • WHERE क्लॉज s2.id IS NULL :सबसे अजीब लेकिन बिल्कुल जरूरी... केवल वही रिकॉर्ड रखता है जो आप चाहते हैं।

कोशिश करें और मुझे बताएं :)

संपादित करें 1: मुझे बस एहसास हुआ कि दूसरी बिंदु धारणा समस्या की देखरेख कर रही थी। यह इसे और भी दिलचस्प बनाता है :p मैं यह देखने की कोशिश कर रहा हूं कि यह पैटर्न आपके date, id के साथ कैसे काम कर सकता है आदेश देना।

2 संपादित करें: ठीक है, यह थोड़ा मोड़ के साथ बहुत अच्छा काम करता है। LEFT JOIN पर शर्त बन जाती है:

LEFT JOIN solutions s2 ON s1.ticket_id = s2.ticket_id
  AND (s2.date > s1.date OR (s2.date = s1.date AND s2.id > s1.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. कैसे Django ढांचे में एक विरासत डेटाबेस को संभालने के लिए

  2. क्या mysql_free_result($result) का उपयोग करना एक अच्छा अभ्यास है?

  3. फायरबेस एफसीएम टोकन - सर्वर को कब भेजना है?

  4. php/mysql में अरबी भाषा प्रकट होती है ???? html में प्रश्न चिह्न

  5. क्या मैं अपने वर्डप्रेस इंस्टाल की wp_options टेबल में ट्रांजेंडर्स को हटा सकता हूँ?