sql >> Databáze >  >> RDS >> Mysql

Získejte všechny příspěvky, které mají konkrétní značku, a všechny ostatní značky ponechte ve výsledcích pomocí SQL

Předpokládám, že rádi pošlete do databáze dva požadavky.

Nejprve získejte všechny příspěvky pro daný tag:

SELECT * FROM blog_posts bp 
WHERE EXISTS (SELECT * FROM blog_tags bt INNER JOIN
               tags t ON t.id = bt.tag_id
              WHERE bp.id = bt.post_id
               AND t.tag = @SearchTag)

Za druhé, chcete tagy, myslím, propojené s tím, který hledáte prostřednictvím příspěvků:

SELECT * FROM tags t
WHERE EXISTS ( -- Here we link two tags via blog_tags
               SELECT * FROM blog_tags bt1 INNER JOIN
               blog_tags bt2 ON bt1.post_id = bt2.post_id
                     AND bt1.tag_id != bt2.tag_id INNER JOIN
               tags t ON t.id = bt1.tag_id
               WHERE t.tag = @SearchTag
                  AND t.id = bt2.tag_id
)


  1. Jak zacházet s připojením MySQL pomocí multithreadingu Pythonu

  2. Jak importuji excelovou tabulku do SQL Serveru?

  3. Výstup dotazu s odsazením

  4. Nelze změnit sloupec použitý v omezení cizího klíče