Вернуть записи, значение одного из полей у которых неизменно
Есть таблица вида 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