想象一下2个表,第一个是产品列表(产品),第二个是产品和另一个表(类别)之间的连接表,称为产品类别
产品:
id | name
------------
1 Lorem
2 Ipsum
3 Dolor
4 Sit
产品类别
product_id | categories_id
---------------------------
1 3
1 6
4 1
2 2
如何获取孤儿元素,我的意思是没有类别的元素,所以在这种情况下:3,使用MyISAM以高效的方式(+ 30k记录)?
这有点像显示所有不可连接的行,但这种语法对我来说很奇怪......
答案 0 :(得分:4)
select * from products p
left join product_categories pc on p.id=pc.product_id
where pc.product_id is null
将返回product_Category中找不到的表格产品中的所有产品。 LEft加入,速度非常快。 30k的记录也很少,所以不用担心。
答案 1 :(得分:3)
使用SubQuery:
SELECT name FROM products
WHERE id NOT IN (SELECT product_id FROM products-categories);
使用JOIN
SELECT name FROM products
LEFT JOIN products_categories ON (id=product_id)
WHERE product_id IS NULL;
最好加入 sqlfiddle演示:http://sqlfiddle.com/#!2/684c1/8
答案 2 :(得分:0)
select p.id from products p left join product-categories c on p.id=c.product_id
where c.id is NULL
答案 3 :(得分:0)
一旦我使用了类似的内容
,我就遇到了类似的问题从产品中选择p.id p left join productscategories pc其中pc.categories_id为null
-hj