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

टैग द्वारा सबसे समान सामान निर्धारित करने के लिए एसक्यूएल क्वेरी

यह क्वेरी उन सभी आइटम्स को लौटा देगी जिनमें अधिकतम संख्या में टैग समान हैं:

SET @item = 1;

SELECT
  goods_id
FROM
  links
WHERE
  tag_id IN (SELECT tag_id FROM links WHERE [email protected])
  AND [email protected]
GROUP BY
  goods_id
HAVING
  COUNT(*) = (
    SELECT
      COUNT(*)
    FROM
      links
    WHERE
      tag_id IN (SELECT tag_id FROM links WHERE [email protected])
      AND [email protected]
    GROUP BY
      goods_id
    ORDER BY
      COUNT(*) DESC
    LIMIT 1
  )

कृपया फिडल देखें यहां

या यह सभी आइटम वापस कर देगा, यहां तक ​​​​कि बिना किसी टैग के, सामान्य विवरण में टैग की संख्या के अनुसार आदेश दिया गया है:

SELECT
  goods_id
FROM
  links
WHERE
  [email protected]
GROUP BY
  goods_id
ORDER BY
  COUNT(CASE WHEN tag_id IN (SELECT tag_id FROM links WHERE [email protected]) THEN 1 END) DESC;


  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 में इंडेक्स कैसे बनाएं

  2. MySQL में मानदंड के रूप में हेक्स कोड के साथ रंग द्वारा ऑर्डर करें

  3. MySQL डेटाबेस को अपडेट करने में त्रुटि:प्राथमिक कुंजी के लिए डुप्लिकेट डिफ़ॉल्ट प्रविष्टि ='0'

  4. Perl . में गैर-नियतात्मक MySQL त्रुटियों को ट्रैक करें

  5. Django सेट स्टोरेज इंजन और डिफ़ॉल्ट चारसेट