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

एकाधिक तालिकाओं से खींचने के लिए एकल क्वेरी का उपयोग करें

आप इसे स्वयं-जुड़ने के साथ प्राप्त करने में सक्षम होना चाहिए, जैसे:

SELECT DISTINCT e2.eventId
FROM event_tags e1
INNER JOIN event_tags e2 
    ON e2.tagName LIKE CONCAT('%', e1.tagName, '%') AND e2.eventId != e1.eventId
WHERE e1.eventId = {}

मैंने देखा है कि दूसरी क्वेरी में LIMIT 3 है खंड। सबसे पहले, कृपया ध्यान दें कि बिना ORDER BY . के खंड यह अनुमानित परिणाम उत्पन्न नहीं करता है। विंडो फ़ंक्शन ROW_NUMBER() . पर आधारित समाधान यहां दिया गया है (MySQL 8 में उपलब्ध), जो 3 से अधिक event_id produce उत्पन्न नहीं करेगा प्रत्येक मिलान टैग के लिए :

SELECT DISTINCT event_id FROM (
    SELECT e2.eventId, ROW_NUMBER() OVER(PARTITION BY e1.eventId ORDER BY e2.eventId) rn
    FROM event_tags e1
    INNER JOIN event_tags e2 
        ON e2.tagName LIKE CONCAT('%', e1.tagName, '%') AND e2.eventId != e1.eventId
    WHERE e1.eventId = {}
) WHERE rn <= 3



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP कोड का उपयोग करके MySQL डेटाबेस में इमेज कैसे अपलोड करें

  2. (2006, 'MySQL सर्वर चला गया है') WSGI में django

  3. जब INSERT ट्रिगर को संसाधित किया जाता है तो कैसे innodb टेबल लॉक हो जाते हैं?

  4. MySQL स्टार्टअप त्रुटि - मूल तत्व गुम है

  5. mysql में एमपी 3 फाइलों को स्टोर करना