Вернуть записи, значение одного из полей у которых неизменно

Есть таблица вида id, email, ip значения столбцов email и ip не уникальны

пример:

1 [email protected] 123.456.0.1
2 [email protected] 123.456.0.2
3 [email protected] 123.456.0.3
4 [email protected] 123.456.0.1
5 [email protected] 123.456.0.1
6 [email protected] 123.456.0.1

Требуется выбрать записи, у которых неизменно значение ip (то есть, для примера выше это окажутся записи только с email = [email protected], потому что значения ip одинаковые)

Пожалуйста, подскажите как сделать такую выборку


Ответы (1 шт):

Автор решения: Сергей

Если таблицу назвать alpha, а поля - email и ip, то вот код:

SELECT email FROM alpha
GROUP BY email
HAVING COUNT(DISTINCT ip) = 1

На выходе:

Query result:
+--------------------+
| email              |
+--------------------+
| [email protected] |
+--------------------+
Affected rows: 1

Полный код для проверки:

CREATE TABLE alpha(
    alpha_id INT PRIMARY KEY AUTO_INCREMENT,
    email VARCHAR(50),
    ip VARCHAR(30)    
);
INSERT alpha (email,ip) VALUES 
("[email protected]", '123.456.0.1'),
("[email protected]", "123.456.0.2"),
("[email protected]", "123.456.0.3"),
("[email protected]", "123.456.0.1"),
("[email protected]", "123.456.0.1"),
("[email protected]", "123.456.0.1");
SELECT email FROM alpha
GROUP BY email
HAVING COUNT(DISTINCT ip) = 1
→ Ссылка