複数の列に対して SELECT DISTINCT を実行するにはどうすればいいですか? 質問する

複数の列に対して SELECT DISTINCT を実行するにはどうすればいいですか? 質問する

2 つの列を組み合わせた結果がすべて異なるテーブルからすべての行を取得する必要があります。したがって、同じ日に同じ価格で行われた他の販売がないすべての販売が必要です。日付と価格に基づいて一意となる販売は、アクティブ ステータスに更新されます。

だから私はこう考えています:

UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
             FROM sales
             HAVING count = 1)

しかし、それ以上進むと頭が痛くなってしまいます。

ベストアンサー1

SELECT DISTINCT a,b,c FROM t

は、おおよそ次のものと同等です。

SELECT a,b,c FROM t GROUP BY a,b,c

GROUP BY 構文はより強力なので、これに慣れておくことをお勧めします。

あなたのクエリについては、次のようにします:

UPDATE sales
SET status='ACTIVE'
WHERE id IN
(
    SELECT id
    FROM sales S
    INNER JOIN
    (
        SELECT saleprice, saledate
        FROM sales
        GROUP BY saleprice, saledate
        HAVING COUNT(*) = 1 
    ) T
    ON S.saleprice=T.saleprice AND s.saledate=T.saledate
 )

おすすめ記事