Выбор первичных ключей, у которых нет внешних ключей в другой таблице

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

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)

SELECT u.id
FROM users u
LEFT JOIN actions a
   ON a.user_id = u.id
WHERE a.user_id IS NULL
 SaidbakR28 окт. 2012 г., 17:30
Он не дал никакого результата.
 bobwienholt29 окт. 2012 г., 18:36
Да, в моем запросе была опечатка.
Решение Вопроса
select u.id
from users u
left outer join actions a on a.user_id = u.id
where a.user_id is null

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

SELECT u.id
FROM users u
LEFT JOIN actions a
ON a.user_id = u.id
AND ISNULL(a.user_id)
 ChaosClown29 окт. 2012 г., 14:26
Вы правы, у меня был правильный тип промаха: ON a.user_id = u.id
 SaidbakR28 окт. 2012 г., 17:29
он вернул всех пользователей.

Ваш ответ на вопрос