以下查询返回大约200000个结果。
在这个查询中嵌套where
子句的工作不是很清楚,即它出现在图片中的哪个位置?
如果我在isNull中注释掉where子句,那么我得到0结果,这很好并且预期因为加入后Max(invoiceID)不为null。
select * from CustomerServices where isNull((
SELECT MAX(invoiceid)
FROM Invoices
LEFT JOIN InvoicesHistory
ON InvoicesHistory.ServiceHistoryID = Invoices.ServiceHistoryID
WHERE serviceID = Invoices.serviceID
),0)=0
如果您希望我添加更多信息,请与我们联系。
答案 0 :(得分:1)
我想你只想要get
:
not exists
在您的情况下,嵌套的select cs.*
from CustomerServices cs
where not exists (select 1
from Invoices i left join
InvoicesHistory ih
on ih.ServiceHistoryID = i.ServiceHistoryID
where cs.serviceID = i.serviceID
);
子句没有做任何事情。它相当于:
WHERE
通过SQL中的作用域规则。很可能,这是一个相关子句,因此需要一个合格的列名。