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

同じ列に複数のWHERE条件がある場合の選択

    GROUP BYのいずれかを使用できます およびHAVING COUNT(*) = _

    SELECT contact_id
    FROM your_table
    WHERE flag IN ('Volunteer', 'Uploaded', ...)
    GROUP BY contact_id
    HAVING COUNT(*) = 2 -- // must match number in the WHERE flag IN (...) list
    

    contact_id, flagを想定 ユニークです。

    または、結合を使用します:

    SELECT T1.contact_id
    FROM your_table T1
    JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded'
    -- // more joins if necessary
    WHERE T1.flag = 'Volunteer'
    

    フラグのリストが非常に長く、一致するものがたくさんある場合は、最初の方がおそらく高速です。フラグのリストが短く、一致するものがほとんどない場合は、おそらく2番目の方が速いことがわかります。パフォーマンスが懸念される場合は、両方のデータをテストして、どちらが最適かを確認してください。



    1. SQLでのDELETEVSDROP

    2. AccessのDAOレコードセットの基礎としてのSQLServerパススルークエリ

    3. DATE_ADD()の例– MySQL

    4. 関係のために許可が拒否されました