我正在使用类别,产品关系来查找数据。我的情况就像我有一个类别表和产品表与categoryid和产品类型。不,假设我有一个特定的类型,我想找到特定类型的产品没有的那些类别。 表格结构就像
Category Table
____________
|Id|Category|
| 1| X |
_____________
Product Table
____________________________
|ID | Product|Category| Type|
| 1 | Y | 1 | 2 |
_____________________________
我可以使用像
这样的子查询找到它SELECT *
FROM category
WHERE id NOT IN(SELECT category
FROM product
WHERE type = 2);
有没有办法通过其他方式获得
我也使用像
这样的JOINSELECT *
FROM category AS c
JOIN products AS p
ON c.id <> p.category
WHERE p.type = 2
为什么这不能给出适当的结果。
答案 0 :(得分:6)
使用LEFT JOIN
并使用IS NULL
谓词:
SELECT *
FROM category AS c
LEFT JOIN products AS p
ON c.id = p.category
AND p.type = 2
WHERE p.category IS NULL;
第二个表中不匹配的行在category
字段中将显示空值,WHERE p.category IS NULL
将过滤并为您提供