0

いくつかの列を持つテーブルがあります。そのうちの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のみを返します。

4

2 に答える 2

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

于 2013-01-21T15:22:31.817 に答える
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フィドルデモ

于 2013-01-21T15:22:22.463 に答える