面试中被问到的SQL查询
Source: Dev.to
Master SQL Interview Pattern
几乎所有查询都遵循以下思路:
SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT
记忆口诀: “聪明的朋友穿绿帽子吃午饭。”
- S → SELECT(列 / 如
SUM、COUNT、AVG的函数) - F → FROM
- W → WHERE
- G → GROUP BY
- H → HAVING
- O → ORDER BY
- L → LIMIT
大多数面试题都是这条流水线的变形。
1️⃣ 第 N 高薪
模式: ORDER BY column DESC → LIMIT N
SELECT *
FROM employees
ORDER BY salary DESC
LIMIT 3;
记忆技巧: 排名 → ORDER BY + LIMIT
3️⃣ 重复姓名
模式: GROUP BY column → HAVING 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 table → WHERE 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 关键字 | 用途 |
|---|---|
| Ranking | ORDER BY + LIMIT(如最高薪水) |
| Duplicate detection | GROUP BY + HAVING(检测重复) |
| Filtering | WHERE(条件) |
| Aggregation | COUNT / SUM(总计) |
| Table copy | SELECT INTO(结构复制) |
| Multi‑table | JOIN(关联) |
| Result merge | UNION(合并) |
Query Construction Checklist
- 需要哪些数据? →
SELECT - 从哪里来? →
FROM - 有过滤条件吗? →
WHERE - 需要分组吗? →
GROUP BY - 分组后需要过滤吗? →
HAVING - 需要排序吗? →
ORDER BY - 需要限制结果数量吗? →
LIMIT
按照这个顺序可以帮助在脑中重构查询。
记住 FROGS‑HL
- F → FROM
- R → WHERE(想象为 “Restriction”)
- O → ORDER BY
- G → GROUP BY
- S → SELECT
- H → HAVING
- L → LIMIT
Question Category Distribution
| 类别 | 数量 |
|---|---|
| Filtering | 6 |
| Ranking | 4 |
| Aggregation | 3 |
| Joins | 3 |
| Duplicates | 2 |
| Table copy | 2 |
| Set operations | 2 |
| Date queries | 1 |
Insight: 面试官最常考察 Filtering(过滤)、Ranking(排名) 和 Aggregation(聚合)。