Записи, айди которых нет в другой таблице - MySQL
Формулировка задачи:
Есть две таблицы. Допустим users (поля id, name, surname) и user_groups (uid, gid, date_joined).
Надо достать всех юзеров, айди которых нет в user_groups.
Решение задачи: «Записи, айди которых нет в другой таблице»
textual
Листинг программы
SELECT u.id FROM users u LEFT JOIN user_groups gr ON u.id = gr.uid WHERE gr.uid IS NULL
Объяснение кода листинга программы
- В данном коде происходит выборка записей из таблицы
users
по полюid
. - В качестве условия для выборки используется отсутствие записей в таблице
user_groups
, связанных с данными из таблицыusers
по полюid
. - Для этого используется оператор
LEFT JOIN
, который объединяет две таблицы по указанному полю и выбирает все записи из левой таблицы (в данном случаеusers
), для которых нет соответствующих записей в правой таблице (user_groups
). - Условие
gr.uid IS NULL
отбирает только те записи, для которых полеuid
в таблицеuser_groups
не имеет значения (то есть отсутствует соответствующая запись в таблицеuser_groups
для данного пользователя). - В результате выполнения запроса получаем список идентификаторов пользователей, которые не входят ни в одну группу.