Как правильно исключить данные при запросе - MySQL

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

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

Приветствую. Есть таблица с данными (например, 1000 строк). Все данные разбиты по группам (например, grup_id, допустим 10 групп по 100 строк).Так же есть поле (например, used_group) в которое помещается флаг, например, в одной из строк 3-ей и 8-й группы у поля used_group, стоит true и все строки группы 3 и 8 нужно исключить из выборки. Например:
SELECT group_id FROM some_table WHERE used_group = TRUE
Получаю результат:
group_id
3
8
А как теперь построить запрос что бы выбрать все записи, кроме этих 2 групп? Т.е.
SELECT * FROM some_table WHERE group_id <> 3 AND group_id <> 8
Т.е. если мне нужно исключить из выборки не просто 2 группы а, например, 8, то мне нужно 8 раз делать
AND group_id <> some_num
Нет ли какой нить зарезервированной команды, что бы ей передать просто набор цифр, типа exclude group_id=(2,4,6,8) и т.д. Подскажите, плиз.

Решение задачи: «Как правильно исключить данные при запросе»

textual
Листинг программы
SELECT * FROM some_table WHERE group_id NOT IN (SELECT group_id FROM some_table WHERE used_group = TRUE)

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. SELECT * FROM some_table — выбираются все данные из таблицы some_table.
  2. WHERE group_id NOT IN (SELECT group_id FROM some_table WHERE used_group = TRUE) — происходит фильтрация результатов первого запроса. В этом блоке выбираются только те строки, у которых значение group_id не входит в список значений group_id, полученных во втором запросе. Второй запрос:
  3. SELECT group_id FROM some_table WHERE used_group = TRUE — выбираются только те значения group_id, для которых значение used_group равно TRUE. Полученный список значений group_id используется в первом запросе для исключения соответствующих строк.

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


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

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

11   голосов , оценка 3.909 из 5