扫盲 2026.10.31 21:31 15 次浏览 0 条评论

MySQL多表关联查询基础

数据分在两三张表里,想一次查出来就得靠关联。核心就三种:INNER JOIN、LEFT JOIN、RIGHT JOIN。

内连接只留两边都对得上的行;左连接以左表为准,右表没匹配的补 NULL;右连接反过来。

-- 用户表和订单表,靠 user_id 串起来
SELECT u.username, o.order_no
FROM `user` u
INNER JOIN `orders` o ON u.id = o.user_id;

-- 左连接:没下过单的人也要列出来,右表字段就是 NULL
SELECT u.username, o.order_no
FROM `user` u
LEFT JOIN `orders` o ON u.id = o.user_id;

想筛“一单都没下的人”,在后面加 WHERE o.id IS NULL 就行,这招排查数据特别好用。

ON 后面只写两张表怎么对应,业务筛选条件放 WHERE。表名太长就起别名,u、o 这种,写起来短一半。

三张表也别慌,接着往下 JOIN 就行,一个 ON 管一对表,注意别漏条件,漏了直接变成笛卡尔积,几十万行能把库拖卡。

说点什么 0

行思随记

欢迎来到:行思随记