1. ホーム
  2. sql-server

[解決済み] 単一の異なるカラムに基づいて一意な行を選択する

2023-06-26 08:13:08

質問

を持つ行を選択したい。 distinct email を持つ行を選択したいのですが、以下のテーブルの例を参照してください。

+----+---------+-------------------+-------------+
| id | title   | email             | commentname |
+----+---------+-------------------+-------------+
|  3 | test    | [email protected]   | rob         |
|  4 | i agree | [email protected]   | rob         |
|  5 | its ok  | [email protected]   | rob         |
|  6 | hey     | [email protected]   | rob         |
|  7 | nice!   | [email protected] | simon       |
|  8 | yeah    | [email protected]  | john        |
+----+---------+-------------------+-------------+

望ましい結果は、次のようになります。

+----+-------+-------------------+-------------+
| id | title | email             | commentname |
+----+-------+-------------------+-------------+
|  3 | test  | [email protected]   | rob         |
|  7 | nice! | [email protected] | simon       |
|  8 | yeah  | [email protected]  | john        |
+----+-------+-------------------+-------------+

を気にしないところ id カラムの値が返されます。 必要なSQLは何でしょうか?

どのように解決するのですか?

TSQLで素早く解決

SELECT a.*
FROM emails a
INNER JOIN 
  (SELECT email,
    MIN(id) as id
  FROM emails 
  GROUP BY email 
) AS b
  ON a.email = b.email 
  AND a.id = b.id;