如何选择特定列与另一行不同的SQL行?

时间:2013-01-21 15:20:38

标签: mysql

我有一些包含一些列的表,其中一列是“电子邮件”。 我想选择此表中的行,其中“email”中没有重复值。

表示表格是这样的:

id - email
10 - hello@hello.com
11 - bro@lift.com
12 - hello@hello.com
13 - hey@hello.com

查询将仅返回id 11和13,因为10和12是重复的。

2 个答案:

答案 0 :(得分:2)

我会推荐使用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

上定义索引

答案 1 :(得分:1)

试试这个:

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 |

SQL Fiddle Demo