ホームページ >データベース >mysql チュートリアル >SQL で複数の列の一意の組み合わせを選択するにはどうすればよいですか?
このガイドでは、SQL データベース内の複数の列の一意の組み合わせを効率的に選択する方法を説明します。 特定の値の組み合わせに基づいて個別の行が必要な場合に、この必要性が生じます。
方法 1: SELECT DISTINCT
最も単純なアプローチでは、DISTINCT
キーワードを使用します。これにより、指定された列に基づいて一意の行のみが直接選択されます。
たとえば、saleprice
テーブルから saledate
と sales
の一意の組み合わせを取得するには:
<code class="language-sql">SELECT DISTINCT saleprice, saledate FROM sales;</code>
方法 2: DISTINCT
と GROUP BY
単純な一意の行選択には DISTINCT
だけでも十分ですが、GROUP BY
と組み合わせると、特にさらなるデータ操作が必要な場合に、より多くの制御と柔軟性が得られます。 GROUP BY
は指定された列に基づいて行をグループ化し、DISTINCT
はグループごとに 1 つの行のみが返されるようにします。 この方法は、より複雑なシナリオで特に役立ちます。
方法 3: 高度な操作にサブクエリを使用する
サブクエリは、特に更新やフィルタリングの前にグループ化されたデータに対して追加の操作を実行する必要がある場合に、一意の組み合わせを選択するための強力なメカニズムを提供します。
たとえば、status
と saleprice
に基づいて一意の売上の saledate
列を更新することを検討してください。
<code class="language-sql">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 );</code>
このクエリのサブクエリは、saleprice
と saledate
を使用して一意の GROUP BY
と HAVING COUNT(*) = 1
の組み合わせを識別します。次に、メイン クエリは、対応する販売レコードの status
を「ACTIVE」に更新します。 このアプローチにより、テーブルを更新する前に柔軟なデータ操作とフィルタリングが可能になります。 HAVING
句により、真に一意な組み合わせ (1 回のみ出現する組み合わせ) のみが考慮されるようになります。
以上がSQL で複数の列の一意の組み合わせを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。