1.利用子查询进行过滤
子查询:嵌套在其他查询中的查询
SELECT column1_name FROM table1 WHERE column2_name IN (
SELECT column2_name FROM table2 WHERE column2_name > 1
);
子查询是把一条SQL语句的结果用于另一条SQL语句的条件
在SELECT语句中,子查询总是从内往外处理
- 列必须匹配
在WHERE子句中使用子查询,必须保证SELECT语句与WHERE子句中具有相同数目的列 - 一般子查询返回单个列,但是如果需要也可以返回多个列
- 子查询一般与IN一起使用,但是也可以使用=、<>等
2.作为计算字段使用子查询
SELECT column1_name,(SELECT COUNT(column2_name) AS C FROM table2 WHERE table2.column3_name = table1.column1_name) FROM table1;
相关子查询:涉及外部查询的子查询
任何时候只要列名具有多义性,就必须使用这种语法(表名和列名用一个句点分隔)