我有一个名为USERS
的表,它具有表GROUPS
的外键(用户可以属于一个或没有GROUPS
)。表格USERS
还包含一列ISDELETED
(包含T
或F
的字符列。
如果GROUPS
中的所有用户都被删除或没有定义用户,我需要一个查询来检索所有未删除的USERS
和所有GROUP
我需要查询返回GROUP
的NULL。
我尝试了以下查询:
SELECT GROUPS.*, USERS.*
FROM GROUPS INNER JOIN
USERS ON GROUPS.ID = USERS.GROUPID
WHERE USERS.ISDELETED = 'F'
但是此查询不会返回空的组。 SQL和我不是世界上最好的朋友,一些帮助会很棒,谢谢。
答案 0 :(得分:2)
如果您想要所有组,无论users表中是否匹配,您都应该使用左外连接:
SELECT GROUPS.*, USERS.*
FROM GROUPS
LEFT OUTER JOIN
USERS
ON GROUPS.ID = USERS.GROUPID AND USERS.ISDELETED = 'F'
答案 1 :(得分:1)
你应该只需要做一个左外连接 -
SELECT GROUPS.*, USERS.*
FROM GROUPS LEFT OUTER JOIN
USERS ON GROUPS.ID = USERS.GROUPID
WHERE USERS.ISDELETED = 'F'
Here's我想用来提醒自己sql连接的差异。
答案 2 :(得分:0)
您需要使用LEFT OUTER JOIN
运算符而不是INNER JOIN
。