如何使用SQL查询进行此连接?

时间:2012-01-16 14:58:06

标签: sql tsql join

我有一个名为USERS的表,它具有表GROUPS的外键(用户可以属于一个或没有GROUPS)。表格USERS还包含一列ISDELETED(包含TF的字符列。

如果GROUPS中的所有用户都被删除或没有定义用户,我需要一个查询来检索所有未删除的USERS和所有GROUP我需要查询返回GROUP的NULL。

我尝试了以下查询:

SELECT     GROUPS.*, USERS.*
FROM       GROUPS INNER JOIN
                  USERS ON GROUPS.ID = USERS.GROUPID
WHERE USERS.ISDELETED = 'F'

但是此查询不会返回空的组。 SQL和我不是世界上最好的朋友,一些帮助会很棒,谢谢。

3 个答案:

答案 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