sql >> Databasteknik >  >> RDS >> Mysql

Mysql många till många relationsfråga. Hur får man alla taggar för filtrerade inlägg?

Tja, det här är det bästa jag kan tänka mig klockan 04:30:

SELECT distinct tag_id FROM
    (SELECT pt1.post_id FROM pt1
    INNER JOIN tags t1 ON (pt1.tag_id = t1.id)
    WHERE t1.id IN (1, 2)
    GROUP BY pt1.post_id
    HAVING COUNT(DISTINCT t1.id) = 2) MatchingPosts
INNER JOIN pt2 ON (MatchingPosts.post_id = pt2.post_id)
WHERE (pt2.tag_id NOT IN (1, 2))

(1, 2) är taggarna du letar efter och antalet måste naturligtvis matcha mängden taggar du använder för att filtrera.

Här är ett exempel (Observera att jag ändrade data något)



  1. SQL Server - In-sats med en deklarerad variabel

  2. Laravel:en till en relation blir en till många relation

  3. Hur anropar man Oracle MD5 hash-funktion?

  4. MYSQL antal räknas?