什么时候用 INNER JOIN,什么时候用 LEFT JOIN

首先准备两张表:

  • 商品表:存放商品信息
  • 图片表:存放图片

然后是建表语句。

商品表,商品的图片是关联到图片表的id

CREATE TABLE product (
    id int,
    name varchar(100) COMMENT '名称',
    img_id int COMMENT '关联的图片id'
);

图片表

CREATE TABLE image (
    id int,
    url varchar(500) COMMENT '图片的url'
);

图片表有4条数据

INSERT INTO image (id, url) VALUES 
(1, 'f7c27424b538281fee5f00db5f83c2de.jpg'),
(2, '522748524ad010358705b6852b81be4c.png'),
(3, '97adf9fdd4c3e8423f37a208beb47a7a.gif'),
(4, '7b1847d909f17365bec38b04b9da6e57.webp');

商品表里有4个商品,其中两个商品没有图片

INSERT INTO product (id, name, img_id) VALUES 
(1, '杯子', 1),
(2, '电脑', null),
(3, '大米饭', 3),
(4, 'PS4', null);

查询所有的商品的所有信息

列出所有的商品的所有信息,包括图片的 url。因为商品表的 img_id 关联到图片的 id,我首先想到的是这样的 sql 语句

SELECT
    product.id,
    product.name,
    image.url
FROM
    product,
    image
WHERE
    product.img_id = image.id

查询结果

id name url
1 杯子 f7c27424b538281fee5f00db5f83c2de.jpg
3 大米饭 97adf9fdd4c3e8423f37a208beb47a7a.gif

这样的结果看起不对,没有列出所有的商品。因为商品的记录有4条,这里只列出了2条。另外两个没有图片的商品哪里去了?

正确的做法

正确的做法是列出所有的商品,如果图片不存在就显示为 NULL。这时候就可以使用左连接——LEFT JOIN

SELECT
    product.id,
    product.name,
    image.url
FROM
    product
LEFT JOIN image ON product.img_id = image.id

查询结果

id name url
1 杯子 f7c27424b538281fee5f00db5f83c2de.jpg
3 大米饭 97adf9fdd4c3e8423f37a208beb47a7a.gif
2 电脑 NULL
4 PS4 NULL

INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别

INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别

(INNER) JOIN:Returns records that have matching values in both tables
LEFT (OUTER) JOIN:Return all records from the left table, and the matched records from the right table
RIGHT (OUTER) JOIN:Return all records from the right table, and the matched records from the left table

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,035评论 2 89
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,801评论 0 44
  • 贴泽辰 儿子今早给我送饭,我在门口打扫卫生看着儿子骑着小米哥从西边过来。我不由感慨时间过得好快现在儿子都快长成半大...
    贴泽辰阅读 170评论 0 0
  • 杨柳依依依水舞 溪浅鱼闲,看落英无数 香径徘徊风过处 林深不见来时路 阵阵响雷催骤雨 半晌蝉鸣,半晌听蛙鼓 疏影婆...
    問問阅读 1,635评论 36 41
  • 爱情就是,你来的时候,我的世界开始春风满面冒新芽。你要走的时候,那些叶子在秋天里开始飘落。然后,留下我,光秃秃...
    凉温阅读 215评论 0 0