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

SQL टैग सूची और टैग फ़िल्टरिंग

left join tags तालिका में शामिल करें और शामिल होने वाले खंड में आईडी की खोज की जा रही है और having में गिनती की जांच करें ।

SELECT u.id,u.name,GROUP_CONCAT(ut.tagid) as tags
FROM users u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
LEFT JOIN tags t ON t.id=ut.tagid AND t.ID IN (10,20,30) --change this as needed
GROUP BY u.id,u.name
HAVING COUNT(ut.tagid) >= COUNT(t.id) AND COUNT(t.id) = 3 --change this number to the number of tags

एक और विकल्प FIND_IN_SET . का उपयोग करना है यदि सीमित मूल्य हैं। उदाहरण के लिए,

SELECT * FROM (
SELECT u.*, GROUP_CONCAT(ut.tagid) as tags 
FROM users as u 
LEFT JOIN usertag as ut ON u.id = ut.userid 
GROUP BY u.id
) T
WHERE FIND_IN_SET('10',tags) > 0 AND FIND_IN_SET('20',tags) > 0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेटाबेस से php/html तालिका में डेटा प्रदर्शित करें

  2. MySQL के साथ पांडा विधि to_sql का उपयोग करते समय एक और यूनिकोडएनकोड त्रुटि

  3. पीएचपी पीडीओ तैयार बयान

  4. com.mysql.jdbc.Driver लोड करने में असमर्थ

  5. निष्पादन अद्यतन पर HQL अधूरा 'क्रॉस जॉइन' उत्पन्न कर रहा है