我已经做了很多关于如何做到这一点并且找不到任何东西的研究。我不认为我想做的事情太难了,但我不知道从哪里开始想发布这个问题。
我有两个表,一个(DEVICE)是设备表,一个(USER_DEVICE)将用户映射到设备(用户通过此映射表分配了设备):
DEVICE USER_DEVICE
id user_id device_id
------ ------- ----------
1 1 1
2 1 2
3 1 5
4 2 3
5
6
我正在尝试创建一个LEFT OUTER JOIN,它将所有设备从当前未分配的DEVICES返回到特定的user_id。例如,为user_id 1运行此查询应返回
DEVICE
id
------
3
4
6
为user_id 2运行此查询应该返回
DEVICE
id
------
1
2
4
5
6
我创建了以下LEFT OUTER JOIN,它成功返回以下内容
SELECT id FROM DEVICE d LEFT OUTER JOIN USER_DEVICE ud ON d.id = ud.device_id WHERE ud.device_id IS null;
DEVICE
id
------
4
6
我不确定我需要在上面的sql中包含user_id = 1语句。我需要的是:
SELECT id FROM DEVICE d LEFT OUTER JOIN USER_DEVICE ud ON d.id = ud.device_id WHERE ud.user_id=1 AND ud.device_id IS null;
但是这不会返回任何行。任何有关如何使用条件语句查找特定user_id的LEFT OUTER JOIN的帮助将不胜感激!谢谢:))
答案 0 :(得分:1)
您希望在on
子句中包含设备上的条件:
SELECT id
FROM DEVICE d LEFT OUTER JOIN
USER_DEVICE ud
ON d.id = ud.device_id and
ud.user_id = 1
WHERE ud.device_id IS null;