主题
子查询
子查询是指在一个 SQL 语句中嵌套另一个查询,作为条件或数据源,提升查询灵活性。
基本用法
子查询可以放在 SELECT
、WHERE
、FROM
等语句中。
1. 在 WHERE 中使用子查询
查询年龄大于所有管理员年龄的用户:
sql
SELECT * FROM users
WHERE age > (SELECT MAX(age) FROM admins);
2. 在 FROM 中使用子查询(派生表)
查询每个年龄的用户数量,并筛选数量大于 5 的年龄段:
sql
SELECT age, user_count FROM (
SELECT age, COUNT(*) AS user_count
FROM users
GROUP BY age
) WHERE user_count > 5;
3. 在 SELECT 中使用子查询
查询每个用户最新订单时间:
sql
SELECT name,
(SELECT MAX(order_date) FROM orders WHERE user_id = users.id) AS last_order
FROM users;
子查询的优势
- 实现复杂条件筛选
- 代替多步查询,简化操作
- 与 JOIN 结合提升查询效率
合理使用子查询,能够有效增强 SQLite 查询的表达力和功能。