1. ホーム
  2. sql

[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?

2022-03-20 17:54:25

質問

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

だから、私は考えている。

UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
             FROM sales
             HAVING count = 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
 )