SQL JOIN · 7 种连接交互演示
点击一种 JOIN,观察红色区域、SQL 和结果表如何同步变化。A 是用户表,B 是订单表。
红色代表被保留的部分;该图只表达匹配关系,JOIN 不会自动去重。
对应 SQL
实际 JOIN 查询结果
| A.id | name | B.id | product |
|---|
表格是示意输出,不保证 SQL 未指定 ORDER BY 时的行顺序。
原始数据(固定不变)
A · users
| id | name |
|---|---|
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
B · orders
| id | user_id | product |
|---|---|---|
| 101 | 1 | 手机 |
| 102 | 2 | 电脑 |
| 103 | 4 | 鼠标 |
关联条件:A.id = B.user_id。张三和李四匹配成功,王五只有用户记录,鼠标订单只有订单记录。
MySQL 重点:MySQL 不直接支持
FULL OUTER JOIN。本页面第 6、7 种显示的是可在 MySQL 中使用的模拟写法(LEFT JOIN + UNION ALL + RIGHT JOIN)。另外,ON 决定匹配条件;WHERE 对连接后的行做筛选。实际数据库在没有 ORDER BY 时不保证结果顺序。