GUIDE深度 · Deep dive
子查询、EXISTS 和窗口函数
子查询可以返回一个值、一列或多行:= 用于单值,IN 用于多行,EXISTS 只判断是否存在。窗口函数在不合并行的前提下做排名/累计。
子查询
IN (SELECT ...) 多行。
EXISTS (SELECT 1 ...) 只判断存在。
相关子查询引用外层表。
窗口
ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...)。
窗口函数不减少行数。
常见问题
子查询能返回多列吗?
可以,但比较时要用行值/EXISTS。
CTE 是什么?
WITH 命名的临时结果集,便于复用。