1.子查询的语法
子查询的语法与正常的sql查询语句一致,只是嵌套在sql语句中,通常用来简化多表联查,也可以与多表联查混合使用,子查询语句可以嵌套在select,form,where等关键字后.
例如: select(子查询) form 表 where 条件
select 返回值 form (子查询) where 条件
select 返回值 form 表 where (子查询)
需要注意的是子查询嵌套在select后是返回一个值,相当于查询语句中给定的返回值;嵌套在form后的子查询返回一个结果集(表);嵌套在where后一般与条件运算符连接使用.
2.在select中嵌套
如果有一张学生表(student),记录着学生的名字(name),学号(id),性别(sex)等信息,另外一张表借书卡表(s_card),记录着学号对应的借书卡号(id)等信息,且每个学生只对应一张借书卡.如果想要在一张表中显示出学号对应的卡号关系,就可以用到在select中嵌套的子查询.
SELECT s.id,(SELECT sc.id FROM s_card sc where sc.s_id = s.id ) as s_card_id
FROM student s
3.在from中嵌套
在form后的子查询一般与关联查询同时使用,如果有一张学生表(student),和一张借书卡表(s_card),两张表通过学生id关联,且每个学生只对应一张借书卡.现在我想要同时知道两张表的信息,就可以用到from后嵌套子查询的方法.需要注意的是子查询在from后嵌套返回的是一个结果集(表),所以必须给这个表起一个别名.