ホームページ >データベース >mysql チュートリアル >複数列の SQL クエリから一意の電子メール アドレスのみを取得するにはどうすればよいですか?

複数列の SQL クエリから一意の電子メール アドレスのみを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 11:37:20796ブラウズ

How Can I Retrieve Only Unique Email Addresses from a Multi-Column SQL Query?

特定の列の DISTINCT

製品から ID、Email、ProductName、ProductModel などの複数の列を取得するクエリを指定した場合テーブルを変更して、一意の電子メール値のみを表示するにはどうすればよいですか?

これに対処するには、SQL Server 2005 以降のバージョンでは、次の解決策が提供されます。

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
        FROM Products
) a
WHERE rn = 1

このクエリは、ROW_NUMBER() 関数を使用して、各電子メール パーティション内の各行に行番号を ID の降順で割り当てます。 rn 列は、rn が 1 に等しい行のみが選択されるため、最終結果に含める必要がある行を識別します。

クエリをさらに絞り込むには、WHERE 句を追加して、ベースで行をフィルタリングできます。特定の基準に基づいて。たとえば、特定の ProductModel とその ProductName に特定の部分文字列が含まれる行のみを含めるには:

SELECT *
FROM (
    SELECT  ID, 
            Email, 
            ProductName, 
            ProductModel,
            ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
        FROM Products
    WHERE ProductModel = 2
    AND ProductName LIKE 'CYBER%'
) a
WHERE rn = 1

以上が複数列の SQL クエリから一意の電子メール アドレスのみを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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