带有链接表的排除查询

时间:2014-09-01 10:37:56

标签: sql visual-studio-2012 sql-server-ce-4

我有两张桌子

**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表中根本没有引用的项目。

  • SQL SERVER COMPACT 4.0
  • C#
  • Visual Studio 2012

0 个答案:

没有答案