在这个例子中,我试图返回一个值列表(在这种情况下,公司名称),在另一个表中没有条目(在这种情况下,条目意味着发票)。换句话说,我正在尝试返回没有发票的公司列表。这是我的代码:
Select CompanyName
From tblCompany join tblInvoice
ON tblCompany.CompanyID = tblInvoice.CompanyID
Where tblCompany.CompanyID NOT IN
(Select CompanyID
From tblInvoice)
我想要得到的是:
但是,当我运行代码时,没有显示任何值。谁能告诉我为什么?
答案 0 :(得分:1)
试试这个
Select CompanyName
From tblCompany
Where tblCompany.CompanyID NOT IN
( Select CompanyID
From tblInvoice)
即CompanyName
来自tblCompany
中CompanyID
不存在的所有tblInvoice
。
或者您可以尝试下面的一个,
select CompanyName
from tblCompany
left join tblInvoice on tblCompany.CompanyID = tblInvoice.CompanyID
where tblInvoice.CompanyID is null
答案 1 :(得分:1)
对空值使用左连接和过滤:
select CompanyName
from tblCompany
left join tblInvoice on tblCompany.CompanyID = tblInvoice.CompanyID
where tblInvoice.CompanyID is null
这是有效的,因为错过的连接在连接表的值中返回空值。
答案 2 :(得分:0)
使用以下查询获得所需结果。
long double