扫盲 2026.09.30 16:31 27 次浏览 0 条评论

MySQL子查询写法与注意事项

子查询就是套在 SQL 里的 SQL。常用三种:WHERE 里的 IN、EXISTS,SELECT 里的标量子查询,FROM 里的临时表。

-- 有订单的用户
SELECT * FROM user WHERE id IN (SELECT user_id FROM orders);

-- 标量子查询,只能返回一行一列
SELECT name, (SELECT COUNT(*) FROM orders WHERE user_id=user.id) AS cnt FROM user;

-- EXISTS,外层每行判断一次
SELECT * FROM user u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id=u.id);

注意:标量子查询返回多行会报错。IN 子查询别返回 NULL,容易踩坑。子查询里少用 ORDER BY,除非配 LIMIT。相关子查询逐行跑,数据大就慢,能 JOIN 就 JOIN。FROM 子查询必须起别名。

标签:MySQL,数据库,子查询

说点什么 0

行思随记

欢迎来到:行思随记