SQL不包括通过Join

时间:2011-01-24 13:50:13

标签: sql tsql

这可能很简单,但我发现很难绕过这个。

基本上,我有2张桌子,a和b。 'b'包含所有可能项目的列表,'a'包含链接到'b'中项目的行,以及父编号。即,要在a中显示行中的信息,我会这样做:

select a.field1, a.field2, b.description
from a inner join b on a.itemid = b.itemid
where a.parentnumber = @parentnumber

那种事情起作用。但我还想要一个下拉框来显示为该父帐户列出的的所有项目。我该怎么做?

2 个答案:

答案 0 :(得分:9)

SELECT  *
FROM    b
WHERE   itemid NOT IN
        (
        SELECT  itemid
        FROM    a
        WHERE   a.parentnumber = @parentnumber
        )

答案 1 :(得分:1)

通过对此子查询使用左连接,您可以提供别名并使用此别名执行空检查。我更喜欢这种方法,因为包含子查询结果的别名可以在整个查询中使用。

SELECT *
FROM b

LEFT JOIN
(
SELECT itemid
FROM   a
Where  a.parentnumber = @parentnumber
) As Sub On b.itemid = sub.itemid

WHERE sub.itemid IS NULL