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

1つの列に対して複数の条件が満たされるIDを見つけるためのMysqlクエリ

    SELECT ID, TYPE FROM types NATURAL JOIN (
      SELECT ID FROM types GROUP BY ID HAVING SUM(COLOR='Red') AND SUM(COLOR='Blue')
    ) t WHERE COLOR IN ('Red', 'Blue')
    

    sqlfiddle でご覧ください 。

    または、タイプを区切り文字列に連結して問題がない場合は、1回のパスで目的のデータを抽出できます。

    SELECT   ID, GROUP_CONCAT(TYPE)
    FROM     types
    WHERE    COLOR IN ('Red', 'Blue')
    GROUP BY ID
    HAVING   COUNT(*) = 2
    

    sqlfiddle でご覧ください 。

    テーブルに同じ(ID, COLOR)の複数のレコードが含まれている可能性があることに注意してください ペアの場合、COUNT(*)を置き換える必要があります より高価なCOUNT(DISTINCT COLOR)




    1. PostgreSqlでDB所有者の名前を取得します

    2. SQLスキーマのみをバックアップしますか?

    3. 優先IDのリストでmysqlの結果を並べ替えるにはどうすればよいですか?

    4. 標準SQLで複数の列が定義されている「WhereIN」はありますか?