玖叶教程网

前端编程开发入门

数据库sql多表查询:子查询

子查询可以对查询效率进行优化。延迟加载

父表子表同为上篇文章父表子表

  1. select 子查询
select classid from `student` where `name`='张三'
// 在学生表中查找名字叫张三的教室id 然后在根据教室id在教室表查询对应的教室名 下面即为子查询

select (selcet name from `classroom` where id = classid) from `student` where `name`='张三'
// 在学生表中查找名字叫张三的教室id
  1. where子查询
// 同上思路
select classid from `student` where name='张三'

//查教室表 
select name from `classroom` where id=(select classid from `student` where name='张三')
// 
// 查询张三和王五所在的教室名
select name from `classroom` where id in(select classid from `student` where name in('张三','王五'))
  1. from子查询:主要用于3张表以上的连接查询

假如有a、b、c三张表,先查询a、b,在用a、b查询的结果,在和c表进行连接查询

select子查询和where子查询是把子查询的结果当成数据来查询,from子查询是把查询的结果当成来查询

select c.name from (select name,id from`a`,`b` where a.id=b.id ) t1,`classroom` c where t1.c=c.id
// 先查询a表中id和b表中id相同的name和id数据,返回的name,id的数据别名叫t1
// 在查询t1表和教室表中id相同的数据的教室名字

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言