在 SQLite 中,子查询是一个嵌套在其他 SQL 语句中的查询语句。子查询通常用于检索或操作满足某些条件的数据,然后将其结果传递给外部查询。以下是一些关于 SQLite 子查询的基本示例:

1. 单行子查询
-- 查询 salary 高于平均工资的员工
SELECT employee_name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

上述查询中,子查询 (SELECT AVG(salary) FROM employees) 返回了平均工资,然后外部查询选择了所有工资高于平均工资的员工。

2. 多行子查询
-- 查询每个部门的平均工资
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (SELECT AVG(salary) FROM employees);

在这个示例中,子查询返回了整个公司的平均工资,而外部查询选择了每个部门的平均工资,并只显示那些高于公司平均工资的部门。

3. 子查询作为表达式
-- 使用子查询作为表达式获取每个部门的员工数量
SELECT department, (SELECT COUNT(*) FROM employees e2 WHERE e2.department = e1.department) AS employee_count
FROM employees e1
GROUP BY department;

这个查询中,子查询 (SELECT COUNT(*) FROM employees e2 WHERE e2.department = e1.department) 返回了每个部门的员工数量,然后外部查询使用这个子查询作为表达式获取了每个部门的员工数量。

SQLite 中的子查询可以嵌套多层,但要注意嵌套查询的性能和复杂性。在设计查询时,确保使用子查询是最有效的方式,有时候可以使用联结(JOIN)等其他技术来达到相同的目的。


转载请注明出处:http://www.zyzy.cn/article/detail/14196/SQLite