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