ホームページ >データベース >mysql チュートリアル >SQL で複数の列の一意の組み合わせを選択するにはどうすればよいですか?

SQL で複数の列の一意の組み合わせを選択するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-23 05:41:09863ブラウズ

How Can I Select Unique Combinations of Multiple Columns in SQL?

SQL での一意の列の組み合わせを取得する

このガイドでは、SQL データベース内の複数の列の一意の組み合わせを効率的に選択する方法を説明します。 特定の値の組み合わせに基づいて個別の行が必要な場合に、この必要性が生じます。

方法 1: SELECT DISTINCT

を利用する

最も単純なアプローチでは、DISTINCT キーワードを使用します。これにより、指定された列に基づいて一意の行のみが直接選択されます。

たとえば、saleprice テーブルから saledatesales の一意の組み合わせを取得するには:

<code class="language-sql">SELECT DISTINCT saleprice, saledate FROM sales;</code>

方法 2: DISTINCTGROUP BY

を組み合わせる

単純な一意の行選択には DISTINCT だけでも十分ですが、GROUP BY と組み合わせると、特にさらなるデータ操作が必要な場合に、より多くの制御と柔軟性が得られます。 GROUP BY は指定された列に基づいて行をグループ化し、DISTINCT はグループごとに 1 つの行のみが返されるようにします。 この方法は、より複雑なシナリオで特に役立ちます。

方法 3: 高度な操作にサブクエリを使用する

サブクエリは、特に更新やフィルタリングの前にグループ化されたデータに対して追加の操作を実行する必要がある場合に、一意の組み合わせを選択するための強力なメカニズムを提供します。

たとえば、statussaleprice に基づいて一意の売上の 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>

このクエリのサブクエリは、salepricesaledate を使用して一意の GROUP BYHAVING COUNT(*) = 1 の組み合わせを識別します。次に、メイン クエリは、対応する販売レコードの status を「ACTIVE」に更新します。 このアプローチにより、テーブルを更新する前に柔軟なデータ操作とフィルタリングが可能になります。 HAVING 句により、真に一意な組み合わせ (1 回のみ出現する組み合わせ) のみが考慮されるようになります。

以上がSQL で複数の列の一意の組み合わせを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。