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

一致するタグを持つすべてのプロジェクトを選択します

    次のいずれかの場合、PROJECT.numがわからない場合 /PROJECT_TO_TAGS.project_idPROJECTSに参加する必要があります 関連付けられているタグを見つけるためのID値を取得するためのテーブル。

    INの使用

    SELECT p.*
      FROM PROJECTS p
      JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
     WHERE pt.tag_id IN (SELECT x.tag_id
                           FROM PROJECTS_TO_TAGS x
                          WHERE x.project_id = 4)
    

    EXISTSの使用

    SELECT p.*
      FROM PROJECTS p
      JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
     WHERE EXISTS (SELECT NULL
                     FROM PROJECTS_TO_TAGS x
                    WHERE x.project_id = 4
                      AND x.tag_id = pt.tag_id)
    

    JOINSの使用(これが最も効率的な方法です!)

    DISTINCT JOINは、重複したデータが結果セットに表示されるリスクがあるため、必要です...

    SELECT DISTINCT p.*
      FROM PROJECTS p
      JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
      JOIN PROJECTS_TO_TAGS x ON x.tag_id = pt.tag_id
                             AND x.project_id = 4
    


    1. MySQL:MySQLテーブルのすべてのレコードの内部レコード識別子のようなものはありますか?

    2. Postgresqlでキャリッジリターンと新しい行を削除するにはどうすればよいですか?

    3. クライアントPCでのLocalDBの展開

    4. MySQLWorkbenchを使用して新しいデータベースを作成します