第 2 课
SELECT、WHERE 与 ORDER BY
读懂日常 SQL 查询的核心结构。
大多数日常 SQL 都从这个结构开始:
SELECT id, email, created_at
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 50;
可以分层阅读:
SELECT决定结果里显示哪些列。FROM决定从哪张表开始。WHERE过滤不符合条件的行。ORDER BY控制结果顺序。LIMIT限制返回行数。
这很适合人阅读,但数据库内部不一定按这个文本顺序执行。优化器可能选择索引、重排内部步骤。对调试来说,第一步仍然是读懂逻辑含义。
小心过滤条件
很小的过滤条件变化,可能导致完全不同的结果:
WHERE status = 'paid'
AND created_at >= '2026-01-01'
这表示两个条件都必须满足。如果使用 OR,只要满足其中一个条件即可:
WHERE status = 'paid'
OR status = 'refunded'
查询结果不对时,应该逐个隔离过滤条件。问自己:是哪一个条件把我预期的行排除了?
没有 ORDER BY 就不要依赖顺序
表没有稳定的“自然顺序”可供应用代码依赖。如果接口声称返回“最新用户”,查询应明确写出 ORDER BY created_at DESC。没有它,结果可能在开发环境看似稳定,但随着索引、升级或数据增长发生变化。
关键结论
简单查询可以按 FROM → WHERE → ORDER BY 调试。先确认源数据,再逐步添加过滤,最后添加排序和限制。
使用 SQL 格式化工具 把单行查询拆成可读子句,再逐个检查过滤条件。