![](/img/trans.png)
[英]How can I select rows from one mysql table based on the row being timestamped after a date in another table
[英]how can I select from one table based on non matches in another in mySQL
我有两张桌子
项目:ID,名称
类别:items_id,类别
我需要选择ID不在“类别”表中的所有项目。
我怀疑这确实很简单,但是无法弄清楚语法。
尝试这个:
SELECT
i.*
FROM Items i
LEFT OUTER JOIN Categories c ON i.id=c.items_id
WHERE c.items_id is NULL
不在(选择CATEGORIES.item_id)
不知道这是否比上面的连接要快...但是可以。
SELECT * FROM Items
WHERE id NOT IN (SELECT items_id FROM Categories)
这将从项目表中选择所有内容,仅选择与联接匹配的类别中的记录。 然后过滤掉空值。
Select Item.Id
FROM ITEMS LEFT OUTER JOIN CATEGORIES On
Items.Id = Categories.items_id
where categories.items_id is null
怎么样
SELECT id
, name
FROM ITEMS
WHERE NOT EXISTS(SELECT 1 FROM CATEGORIES WHERE Categories.items.id = ITEMS.id)
这只会带回类别表中没有至少一项的项目
SELECT items.id
FROM items
WHERE NOT EXISTS( SELECT *
FROM categories
WHERE items.id = categories.items.id )
这与Mike Pone和KM列出的加入类别表的方式相同,但是我发现这更具可读性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.