SQL通过联接排除
这可能很简单,但我发现很难理解这一点 基本上,我有两张桌子,a和b“b”包含所有可能项目的列表,“a”包含链接到“b”中项目的行,以及父编号。i、 e,要显示a中的行及其信息,我执行以下操作:SQL通过联接排除,sql,tsql,Sql,Tsql,这可能很简单,但我发现很难理解这一点 基本上,我有两张桌子,a和b“b”包含所有可能项目的列表,“a”包含链接到“b”中项目的行,以及父编号。i、 e,要显示a中的行及其信息,我执行以下操作: select a.field1, a.field2, b.description from a inner join b on a.itemid = b.itemid where a.parentnumber = @parentnumber 这类事情很管用。但我还希望有一个下拉框来显示所有未在a中为该父
select a.field1, a.field2, b.description
from a inner join b on a.itemid = b.itemid
where a.parentnumber = @parentnumber
这类事情很管用。但我还希望有一个下拉框来显示所有未在a中为该父帐户列出的项目。如何执行此操作?通过使用此子查询的左连接,您可以提供一个别名并使用此别名执行空检查。我更喜欢这种方法,因为包含子查询结果的别名可以在整个查询中使用
SELECT *
FROM b
WHERE itemid NOT IN
(
SELECT itemid
FROM a
WHERE a.parentnumber = @parentnumber
)
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
它应该只返回那些未列出的?是的,只返回那些不在该父编号的a中的。