我有两张桌子
**Item**
ID
...
**ShapeItem**
ID
ItemID
ShapeID
RegionID
(还有其他列和表,但它们与此问题无关)
我可以使用INNER JOIN成功返回在特定区域ID中具有特定形状ID的所有项目
SELECT ID FROM Item INNER JOIN ShapeItem ON Item.ID = ShapeItem.ItemID WHERE ShapeID = 2
但是我想要颠倒这个逻辑并返回所有不具有特定形状的项目,所以我的第一个想法是
SELECT ID FROM Item INNER JOIN ShapeItem ON Item.ID = ShapeItem.ItemID WHERE ShapeID <> 2
然而,这并没有产生所需的结果,这会返回所有形状不是特定形状的物品,但它没有考虑那些根本没有任何形状的物品。
我的下一个想法是使用LEFT JOIN,但这会返回每个具有空值的项目(超过400,000)
我目前仍然坚持这个,你能为我建议一条前进的道路吗?
摘要
我想返回所有没有特定形状的项目,包括ShapeItem表中根本没有引用的项目。