如何从MySQL中的连接表中获取孤儿

z31licg0  于 2023-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(128)

想象有2个表,第一个是产品列表(产品),第二个是产品和另一个表(类别)之间的连接表,称为产品-类别
产品名称:

id   |  name
------------
1       Lorem 
2       Ipsum 
3       Dolor 
4       Sit

产品分类

product_id  | categories_id
---------------------------
1             3
1             6
4             1
2             2

如何获取孤儿元素,我的意思是没有类别的元素,所以在这种情况下:3,在一个有效的方式(+30k记录)使用MyISAM?
这有点像显示所有不可连接的行,但这种语法对我来说很奇怪……

klh5stk1

klh5stk11#

select * from products p 
left join product_categories pc on p.id=pc.product_id 
where pc.product_id is null

将返回product_Category中找不到的所有产品。左加入和哪里是非常快的。30k的记录也很少,所以不用担心。

2nc8po8w

2nc8po8w2#

使用子查询:

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;

最好使用join sqlfiddle demo:http://sqlfiddle.com/#!9/14ab38/1

gxwragnw

gxwragnw3#

select p.id from products p left join product-categories c on p.id=c.product_id 
where c.id is NULL
aiqt4smr

aiqt4smr4#

我有一次也遇到过类似的问题

select p.id 
from products p 
left join productscategories pc 
where pc.categories_id is null

相关问题