面试中被问到的SQL查询

发布: (2026年3月8日 GMT+8 14:14)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Master SQL Interview Pattern

几乎所有查询都遵循以下思路:

SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT

记忆口诀: “聪明的朋友穿绿帽子吃午饭。”

  • S → SELECT(列 / 如 SUMCOUNTAVG 的函数)
  • F → FROM
  • W → WHERE
  • G → GROUP BY
  • H → HAVING
  • O → ORDER BY
  • L → LIMIT

大多数面试题都是这条流水线的变形。

1️⃣ 第 N 高薪

模式: ORDER BY column DESCLIMIT N

SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 3;

记忆技巧: 排名 → ORDER BY + LIMIT

3️⃣ 重复姓名

模式: GROUP BY columnHAVING COUNT(*) > 1

SELECT name, COUNT(*)
FROM employees
GROUP BY name
HAVING COUNT(*) > 1;

记忆技巧: 重复 → GROUP BY + HAVING

7️⃣ 名字以 “A” 开头

模式: WHERE 条件

WHERE name LIKE 'A%';
WHERE salary BETWEEN 10000 AND 50000;

记忆技巧: 过滤 → WHERE

8️⃣ 某部门的员工人数

模式: SELECT COUNT(*)FROM tableWHERE condition

SELECT COUNT(*)
FROM employees
WHERE department_name = 'ABC';

记忆技巧: 计数 → COUNT + WHERE

5️⃣ 创建空表(复制结构)

模式: SELECT * INTO new_table FROM old_table WHERE 1=0

SELECT *
INTO new_table
FROM old_table
WHERE 1 = 0;

记忆技巧: 复制结构 → WHERE FALSE

13️⃣ 某经理下的员工(连接)

模式: SELECT columns FROM table1 JOIN table2 ON condition

SELECT e.name, s.salary
FROM employees e
JOIN salaries s
  ON e.employee_id = s.employee_id;

记忆技巧: 多表 → JOIN

19️⃣ UNION

模式:

SELECT ...
UNION
SELECT ...

记忆技巧: 合并结果 → UNION

15️⃣ 最近 8 个月入职的员工

模式: WHERE date >= CURRENT_DATE - INTERVAL

WHERE hire_date >= CURDATE() - INTERVAL 8 MONTH;

记忆技巧: 时间过滤 → INTERVAL

Pattern Summary

SQL 关键字用途
RankingORDER BY + LIMIT(如最高薪水)
Duplicate detectionGROUP BY + HAVING(检测重复)
FilteringWHERE(条件)
AggregationCOUNT / SUM(总计)
Table copySELECT INTO(结构复制)
Multi‑tableJOIN(关联)
Result mergeUNION(合并)

Query Construction Checklist

  1. 需要哪些数据?SELECT
  2. 从哪里来?FROM
  3. 有过滤条件吗?WHERE
  4. 需要分组吗?GROUP BY
  5. 分组后需要过滤吗?HAVING
  6. 需要排序吗?ORDER BY
  7. 需要限制结果数量吗?LIMIT

按照这个顺序可以帮助在脑中重构查询。

记住 FROGS‑HL

  • F → FROM
  • R → WHERE(想象为 “Restriction”)
  • O → ORDER BY
  • G → GROUP BY
  • S → SELECT
  • H → HAVING
  • L → LIMIT

Question Category Distribution

类别数量
Filtering6
Ranking4
Aggregation3
Joins3
Duplicates2
Table copy2
Set operations2
Date queries1

Insight: 面试官最常考察 Filtering(过滤)Ranking(排名)Aggregation(聚合)

0 浏览
Back to Blog

相关文章

阅读更多 »

理解连接和窗口函数

Joins 允许您基于相关列合并两个或多个表中的行。INNER JOIN 只返回两个表中具有匹配值的行。