ホームページ >データベース >mysql チュートリアル >複数列の SQL クエリから一意の電子メール アドレスのみを取得するにはどうすればよいですか?
特定の列の 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 サイトの他の関連記事を参照してください。