SQL: 複数の列にわたる一意の組み合わせの識別
この記事では、SQL の複数の列にわたる値の一意の組み合わせを見つけるという課題に取り組み、特に非アクティブとしてマークされた販売レコードの更新に焦点を当てます。 目標は、同じ日に同じ価格で発生しなかった販売を特定し、そのステータスを「アクティブ」に更新することです。 単純な DISTINCT
句は単一の列でのみ機能するため、十分ではありません。
GROUP BY
句は強力な解決策を提供します。
SELECT a, b, c FROM t GROUP BY a, b, c;
これは、列 a
、b
、c
の一意の組み合わせに基づいて行をグループ化し、事実上、複数列 DISTINCT
と同じ結果を実現します (ただし、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 );
このクエリは、サブクエリを使用して、一意の saleprice
と saledate
の組み合わせ (COUNT(*) = 1
の場合) で売上を識別します。 次に、外側のクエリはこれらの販売の status
を「ACTIVE」に更新します。
GROUP BY
とネストされたクエリを使用すると、複数の列にわたる値の一意の組み合わせに基づいてデータを効率的に管理および更新できます。 これにより、複雑なデータ操作タスクを処理するための堅牢かつ正確な方法が提供されます。
以上がDISTINCT を使用して SQL の複数の列にわたる値の一意の組み合わせを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。