我有两张桌子
ITEMS:id,name
类别:items_id,category
我需要选择ID不在CATEGORIES表中的所有项目。
我怀疑这很简单,但无法弄清楚语法。
答案 0 :(得分:3)
试试这个:
SELECT
i.*
FROM Items i
LEFT OUTER JOIN Categories c ON i.id=c.items_id
WHERE c.items_id is NULL
答案 1 :(得分:3)
NOT IN(选择CATEGORIES.item_id)
不确定这是否比上面的连接更快......但它确实有效。
答案 2 :(得分:2)
SELECT * FROM Items
WHERE id NOT IN (SELECT items_id FROM Categories)
答案 3 :(得分:0)
这将从items表中选择所有内容,并仅选择与该联接匹配的类别中的记录。然后过滤掉空值。
Select Item.Id
FROM ITEMS LEFT OUTER JOIN CATEGORIES On
Items.Id = Categories.items_id
where categories.items_id is null
答案 4 :(得分:0)
怎么样
SELECT id
, name
FROM ITEMS
WHERE NOT EXISTS(SELECT 1 FROM CATEGORIES WHERE Categories.items.id = ITEMS.id)
这只会带回在类别表中没有至少一个条目的项目
答案 5 :(得分:0)
SELECT items.id
FROM items
WHERE NOT EXISTS( SELECT *
FROM categories
WHERE items.id = categories.items.id )
这与加入类别表一样,如Mike Pone和KM所列,但我觉得这更具可读性。