Вопрос по sql, database, mysql, one-to-many – Выбор первичных ключей, у которых нет внешних ключей в другой таблице

10

Для упрощения у меня есть две таблицы, связанные с одной ко многим с использованием внешнего ключа, например:

Users table:
id
name

Actions table:
id
user_id

один пользователь может иметь много действий или нет. Мне нужен выбор SQL, который возвращает идентификаторы пользователей, которые нев таблице действий не должно быть значения user_id.

Users Table:
id      name
1       John
2       Smith
3       Alice

Actions Table:
id      user_id
1       3
2       1

Поэтому мне нужен SQL-запрос, который возвращает идентификатор пользователя 2 (Смит), потому что значения внешнего ключа нет включить идентификатор 2

Я попробовал следующий SQL, но он возвращает все идентификаторы пользователей:

SELECT users.id from users left join actions on actions.user_id is null

Ваш Ответ

3   ответа
2
SELECT u.id
FROM users u
LEFT JOIN actions a
   ON a.user_id = u.id
WHERE a.user_id IS NULL
Он не дал никакого результата. SaidbakR
Да, в моем запросе была опечатка. bobwienholt
15
select u.id
from users u
left outer join actions a on a.user_id = u.id
where a.user_id is null
3

Оптимизированная версия будет:

SELECT u.id
FROM users u
LEFT JOIN actions a
ON a.user_id = u.id
AND ISNULL(a.user_id)
Вы правы, у меня был правильный тип промаха: ON a.user_id = u.id ChaosClown
он вернул всех пользователей. SaidbakR

Похожие вопросы