Mysql выбрать данные по условию

Узнай цену своей работы

Формулировка задачи:

всем привет. есть таблица
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
нужно выбрать одно значение поля "phone" где значение "duration" меньше 10, но при этом если хотя бы одно значение "duration" больше 10, то "phone" не выбирается, т.е . должно получится так: 4995418933 4995419551 4995417780 4995487406 Пробовал и через GROUP BY и через DISTINCT, но не знаю как правильно сделать выборку по условию, что если хотя бы одно значение "duration" больше 10, то это значение выбирать не нужно. Спасибо за помощь.

Решение задачи: «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, удовлетворяющих следующим условиям:

  1. Значение поля Duration меньше 10.
  2. Не существует записей в таблице mytest, у которых значение поля phone равно значению поля phone текущей записи и значение поля Duration больше или равно 10. Список элементов кода:
  3. SELECT DISTINCT phone — выборка уникальных значений поля phone.
  4. FROM mytest T1 - выборка данных из таблицы mytest.
  5. WHERE Duration < 10 - установка условия на значение поля Duration.
  6. AND NOT EXISTS(SELECT phone FROM mytest T2 WHERE T2.phone = T1.phone AND Duration >= 10) — проверка наличия записей, удовлетворяющих условию. Получается, что в результате выполнения данного запроса будут возвращены уникальные значения поля phone, для которых выполняются условия: значение поля Duration меньше 10 и не существует записей с таким же значением поля phone и значением поля Duration больше или равно 10.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.5 из 5
Похожие ответы