想象有2个表,第一个是产品(产品)列表,第二个是产品和另一个表(类别)之间的连接表,称为产品类别
产品:
id | name
------------
1 Lorem
2 Ipsum
3 Dolor
4 Sit
Run Code Online (Sandbox Code Playgroud)
产品类别
product_id | categories_id
---------------------------
1 3
1 6
4 1
2 2
Run Code Online (Sandbox Code Playgroud)
如何获取孤立元素,我的意思是没有类别的元素,所以在这种情况下:3,使用 MyISAM 以有效的方式(+30k 记录)?
这有点像显示所有不可连接的行,但这种语法对我来说很奇怪......
您可以通过两种方式实现这一目标:
使用子查询:
SELECT name FROM products
WHERE id NOT IN (SELECT product_id FROM products-categories);
Run Code Online (Sandbox Code Playgroud)
或使用 JOIN (首选方式)
SELECT name FROM products
LEFT JOIN products_categories ON (id=product_id)
WHERE product_id IS NULL;
Run Code Online (Sandbox Code Playgroud)
最好加入 sqlfiddle 演示:http://sqlfiddle.com/#!9/14ab38 /1
select * from products p
left join product_categories pc on p.id=pc.product_id
where pc.product_id is null
Run Code Online (Sandbox Code Playgroud)
将返回在 product_Category 中未找到的表产品中的所有产品。LEft join 和 where 非常快。30k 记录也很少,所以不用担心。
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |