Sql-Server
NOT IN(連同連接)查詢
我有兩張桌子:
Part
,OrderLine
:Part (PartNum PK, PartDesc, Price) OrderLine (OrderNum PK, PartNum PK, QtyOrdered)
我想找出沒有訂購的零件。我想我有一個好主意,但我可能會遺漏一些東西;我認為最有可能在語法上。請檢查:
select Part.PartNum ,OrderLine.OrderNum from OrderLine inner join Part on OrderLine.PartNum = Part.PartNum where PartNum not in ( select distinct (OrderNum) from OrderLine )
它是否正確?
如果您想要未訂購的零件,則應以 開頭
Part
,而不是OrderLine
。當您考慮套裝時,這是唯一可以想像得到您正在尋找的物品的套裝。Part 可以是訂購零件的超集,而 OrderLine 可以很容易地成為零件的子集。SELECT PartName FROM Part WHERE PartNum NOT IN ( SELECT PartNum FROM OrderLine )
通常情況下,比較整數比字元串更有效,所以我更改了
WHERE
子句以查找 PartNums,而不是 PartNames。