我有一个包含一些列的表格,其中之一是“电子邮件”。我想选择此表中的行,其中“电子邮件”中没有重复值。
意思是如果表是这样的:
id - email
10 - hello@hello.com
11 - bro@lift.com
12 - hello@hello.com
13 - hey@hello.com
该查询将仅返回 id 11 和 13,因为 10 和 12 是重复的。
我有一个包含一些列的表格,其中之一是“电子邮件”。我想选择此表中的行,其中“电子邮件”中没有重复值。
意思是如果表是这样的:
id - email
10 - hello@hello.com
11 - bro@lift.com
12 - hello@hello.com
13 - hey@hello.com
该查询将仅返回 id 11 和 13,因为 10 和 12 是重复的。
我会推荐使用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 |