SQL выберите, где повторяется, но отличается от другого столбца - PullRequest
0 голосов
/ 24 февраля 2009

У меня есть следующая таблица:

uid | key | email
-----------------
1   |  1  | test@test.com
2   |  2  | test@test.com
3   |  3  | test@test.com
4   |  4  | test@test.com
5   |  4  | test@test.com
6   |  4  | test@test.com
7   |  6  | abce@test.com
8   |  7  | defg@test.com

Я бы хотел получить все строки с разными ключами, но повторяющиеся значения электронной почты

результат должен выглядеть следующим образом:

uid | key | email
-----------------
1   |  1  | test@test.com
2   |  2  | test@test.com
3   |  3  | test@test.com

Ответы [ 2 ]

2 голосов
/ 24 февраля 2009
SELECT MIN(uid) as uid, key, email
FROM Keys k INNER JOIN 
    (SELECT email FROM KEYS GROUP by email HAVING COUNT(email) > 1 ) k2
    ON k.email = k2.email
GROUP BY key, email
HAVING COUNT(key) = 1
1 голос
/ 24 февраля 2009
SELECT * FROM table
WHERE email NOT IN
(
SELECT email 
FROM table GROUP BY email
HAVING COUNT(email) <= 1)
AND key IN
(
SELECT key
FROM table
GROUP BY key
HAVING COUNT(key) = 1 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...