Mysql выбрать данные по условию
Формулировка задачи:
всем привет. есть таблица
нужно выбрать одно значение поля "phone" где значение "duration" меньше 10, но при этом если хотя бы одно значение "duration" больше 10, то "phone" не выбирается, т.е . должно получится так:
4995418933
4995419551
4995417780
4995487406
Пробовал и через GROUP BY и через DISTINCT, но не знаю как правильно сделать выборку по условию, что если хотя бы одно значение "duration" больше 10, то это значение выбирать не нужно.
Спасибо за помощь.
phone duration 4995417636 0 4995417636 0 4995417636 10 4995418933 0 4995418933 5 4995418933 0 4995410866 0 4995410866 0 4995410866 20 4995419516 20 4995419551 5 4995480122 20 4995417780 0 4995487406 0
Решение задачи: «Mysql выбрать данные по условию»
textual
Листинг программы
SELECT DISTINCT phone FROM mytest T1 WHERE Duration < 10 AND NOT EXISTS(SELECT phone FROM mytest T2 WHERE T2.phone = T1.phone AND Duration >= 10);
Объяснение кода листинга программы
В данном коде происходит выборка уникальных значений поля phone
из таблицы mytest
, удовлетворяющих следующим условиям:
- Значение поля
Duration
меньше 10. - Не существует записей в таблице
mytest
, у которых значение поляphone
равно значению поляphone
текущей записи и значение поляDuration
больше или равно 10. Список элементов кода: - SELECT DISTINCT phone — выборка уникальных значений поля
phone
. - FROM mytest T1 - выборка данных из таблицы
mytest
. - WHERE Duration < 10 - установка условия на значение поля
Duration
. - AND NOT EXISTS(SELECT phone FROM mytest T2 WHERE T2.phone = T1.phone AND Duration >= 10) — проверка наличия записей, удовлетворяющих условию.
Получается, что в результате выполнения данного запроса будут возвращены уникальные значения поля
phone
, для которых выполняются условия: значение поляDuration
меньше 10 и не существует записей с таким же значением поляphone
и значением поляDuration
больше или равно 10.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д