sql >> データベース >  >> RDS >> Mysql

Mysql多対多の関係クエリ。フィルタリングされた投稿のすべてのタグを取得するにはどうすればよいですか?

    さて、これは私が午前4時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)は探しているタグであり、もちろん、その数は、フィルタリングに使用しているタグの数と一致する必要があります。

    これが例 です。 (データを少し変更したことに注意してください)



    1. プログラムが終了すると、MySQLの行が削除されます

    2. 更新に失敗した場合のMysqlトランザクションのロールバック

    3. 10個の例を含むPL/SQLのOracleCREATETABLEコマンド

    4. ORA-01008:すべての変数がバインドされているわけではありません。彼らは縛られている