SQL JOIN · 7 种连接交互演示

点击一种 JOIN,观察红色区域、SQL 和结果表如何同步变化。A 是用户表,B 是订单表。

AB用户订单
红色代表被保留的部分;该图只表达匹配关系,JOIN 不会自动去重。

对应 SQL

实际 JOIN 查询结果

A.idnameB.idproduct

表格是示意输出,不保证 SQL 未指定 ORDER BY 时的行顺序。

原始数据(固定不变)

A · users
idname
1张三
2李四
3王五
B · orders
iduser_idproduct
1011手机
1022电脑
1034鼠标

关联条件:A.id = B.user_id。张三和李四匹配成功,王五只有用户记录,鼠标订单只有订单记录。

MySQL 重点:MySQL 不直接支持 FULL OUTER JOIN。本页面第 6、7 种显示的是可在 MySQL 中使用的模拟写法(LEFT JOIN + UNION ALL + RIGHT JOIN)。另外,ON 决定匹配条件;WHERE 对连接后的行做筛选。实际数据库在没有 ORDER BY 时不保证结果顺序。