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

MySQLはこれとあれの両方を選択します

    かなり簡単なオプションが2つあります。

    アイテムごとに1回、セールテーブルに2回参加できます。 DISTINCTをスキップした場合 、ストアで複数のハンマーまたは温度計を販売している場合、値が重複する可能性があります。

    SELECT DISTINCT s.shopname
    FROM shops s
    JOIN sale s1 ON s.shopcode = s1.shopcode AND s1.product='hammer'
    JOIN sale s2 ON s.shopcode = s2.shopcode AND s2.product='thermometer';
    

    ...または、ハンマーまたは温度計ですべての一致を見つけて、存在する個別の値の数を数えることができます。可能な値が2つあり、両方が得られれば、設定は完了です。

    SELECT s.shopname
    FROM shops s
    JOIN sale s1 ON s.shopcode = s1.shopcode
    WHERE s1.product IN('hammer','thermometer')
    GROUP BY s.shopname
    HAVING COUNT(DISTINCT s1.product)=2;
    

    両方をテストするSQLfiddle



    1. 特定の列を持つすべての行をカウントし、週ごとにグループ化

    2. 条件付きのLEFTOUTERJOIN(どこで、注文するか)?

    3. mysqlのhtml入力からデータを検索

    4. PostgreSQLでのSin()のしくみ