いくつかの列を持つテーブルがあります。そのうちの1つは「email」です。このテーブルの「email」に重複する値がない行を選択したいと思います。
テーブルが次のようになったかどうかの意味:
id - email
10 - hello@hello.com
11 - bro@lift.com
12 - hello@hello.com
13 - hey@hello.com
10と12は重複しているため、クエリはID11と13のみを返します。
いくつかの列を持つテーブルがあります。そのうちの1つは「email」です。このテーブルの「email」に重複する値がない行を選択したいと思います。
テーブルが次のようになったかどうかの意味:
id - email
10 - hello@hello.com
11 - bro@lift.com
12 - hello@hello.com
13 - hey@hello.com
10と12は重複しているため、クエリはID11と13のみを返します。
を使用するクエリをお勧めしますJOIN
。
SELECT *
FROM tableName
WHERE email IN
(
SELECT email
FROM tableName
GROUP BY email
HAVING COUNT(*) = 1
)
または使用JOIN
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT email
FROM tableName
GROUP BY email
HAVING COUNT(*) = 1
) b ON a.email = b.email
パフォーマンスを向上させるには、列にインデックスを定義するを使用しますemail
これを試して:
SELECT *
FROM Emails
WHERE email NOT IN(SELECT email
FROM emails
GROUP BY email
HAVING COUNT(email) > 1);
これはあなたに与えるでしょう:
| ID | EMAIL |
----------------------
| 11 | bro@lift.com |
| 13 | hey@hello.com |