连接原理与执行顺序

第 1 步:生成笛卡尔积(全匹配)
把左表每一行,和右表每一行全部组合一遍。
左表 3 行 + 右表 3 行 = 9 行数据
第 2 步:按 ON 条件过滤(保留有效数据)
只保留 ON 左表.字段 = 右表.字段 匹配成功的行。

——————————————————————————————————————————————————

SQL 完整执行顺序

  1. FROM / JOIN 👉 先找表、拼接表
  2. ON 👉 连接条件过滤
  3. WHERE 👉 对拼接后的结果过滤
  4. GROUP BY 👉 分组
  5. HAVING 👉 分组后过滤
  6. SELECT 👉 查要显示的字段
  7. ORDER BY 👉 最后排序

———————————————————————————————————————————————————

create table user_info
(

user_id int,
user_name varchar(10)

);

insert into user_info
values
(1,'张三'),
(2,'李四'),
(3,'王五');

create table order_info
(

order_id int,
user_id int,
order_name varchar(20)

);
insert into order_info
values
(101,1,'手机'),
(102,2,'电脑');

select
u.user_id,
u.user_name,
o.order_name

from user_info u --左表
Left JOIN order_info o --右表
on u.user_id = o.user_id;

select *
from user_info u
left join order_info o
on u.user_id = o.user_id --先执行 连接过滤
where o.order_name = '手机'; --后执行 整体过滤

posted @ 2026-04-28 20:55  菜鸟的奋斗军  阅读(4)  评论(0)    收藏  举报