SQL随笔
SQL随笔

SQL随笔

  • Join、Inner Join、Left Join、Right Join的区别
1.Join和inner Join一样,返回两张表关联字段共同存在的记录
2.Left Join,以左表为中心,返回左表(test1/a(别名))符合条件的记录和右表(test2/b(别名))与左表关联字段(on ?=?)相等的记录,没有则返回空
3.Right Joinn,以右表为中心,返回右表符合条件的记录,和左表与右表关联字段相等的记录,没有则返回
总结和注意事项:
1.从左到右依次执行:每个Left/Right Join都是基于前一步的结果集进行的
2.保留左/右表(取决于left或right join)所有数据,即使连接表中没有匹配的行,主表的数据仍会被保留,未匹配的字段显示为 NULL

示例:有如上三表,要求查询所有用户及其订单和支付信息(即使没有订单或支付记录)

useridname
1Alice
2Bob
3Carl
user用户表
order_iduser_idproduct
1011手机
1021耳机
1033笔记本
order订单表
payment_idorder_idamount
2011015000
2021038000
payment支付表
SQL如下:
SELECT 
    u.name AS 用户名,
    o.product AS 订单商品,
    p.amount AS 支付金额
FROM user u
LEFT JOIN order o ON u.user_id = o.user_id
LEFT JOIN payment p ON o.order_id = p.order_id;
用户名订单商品支付金额
Alice手机5000
Alice耳机NULL(无耳机订单)
BobNULL(Bob无订单)NULL
Carl笔记本8000
执行结果

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注