MySQL之子查询与联合查询

原创 2018年04月17日 16:28:37
子查询
1.in子查询
#查询没有选修“计算机网络”的学生学号和姓名
select 学号,姓名 from student where 学号 not in
   (select 学号 from sc where 课程号 in
      (select 课程号 from course where 课程名称 = '计算机网络'));
#可以观察发现嵌套的时候字段是也进行嵌套

#查询所有成绩大于80分的学生的学号和姓名
select 学号,姓名 from student
  where 学号 in
    (select 学号 from sc where 成绩>80);
·
2.比较运算符查询
#查询选修07003号课程,且平均分数超过平均成绩的学号
select 学号 from sc
   where 课程号 = '07003' and 成绩 >=
     (select avg(`成绩`) from sc);

3.all或all子查询
#any表示大于一组值中的任意一个 all大于一组值中的每一个
#查询成绩最高的学号和成绩
select 学号,成绩 from sc 
   where `成绩`>= all(select 成绩 from sc);

#查询选修07002课程号的成绩高于07004课程号的成绩的学生的学号
select 学号 from  sc
  where 课程号='07002' and 成绩>any
    (select 成绩 from sc
    where 课程号='07004');

4.exists查询
#查询选修07003课程的学生姓名
  select 姓名 from student
   where exists
 ( select * from sc
      where student.`学号`=sc.`学号` and 课程号 = '07003'); 

#查询没有选修07003课程的学生姓名
 select 姓名 from student
   where not exists
 ( select * from sc
      where student.`学号`=sc.`学号` and 课程号 = '07003'); 
 
联合查询
1.union  并集查询,将2个或以上的查询结果合并成一个综合的查询结果
#在student中查询年龄不大于21岁的人和女生的信息
select * from student
  where year(NOW())-year(`出生日期`)<=21
union
 select * from  student
   where `性别`='女'; 

#查询选修课程07002或07003的成绩信息
select * from sc
   where 课程号 = '07002'
union 
select * from sc
   where `课程号` = '07003';

2.join

#查询选修课程07002或选修成绩在85以上的成绩信息
select distinct a.*
  from sc a join sc b on a.学号=b.学号
      where (a.课程号 =  07002 )
           or (a.成绩 >=85);


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/deepseazbw/article/details/79976720

一步一步学MySQL----16 多表数据记录查询之子查询

16.1 为什么使用子查询 日常工作中,经常会用到多表查询,而在进行多表查询时,首先会对两个表进行笛卡尔积操作,然后再选取符合匹配条件的数据记录。在进行笛卡尔积操作的时候,会生成两个数据表中数据记...
  • u013003827
  • u013003827
  • 2017-03-31 23:17:17
  • 362

MySQL数据高级查询之连接查询、联合查询、子查询

大圣网络 2017-01-31 09:19 连接查询 连接查询: 将多张表(>=2)进行记录的连接(按照某个指定的条件进行数据拼接)。 连接查询的意义: 在用户查看数据的...
  • u011277123
  • u011277123
  • 2017-02-04 15:17:13
  • 26695

mysql两表联合查询的四种情况

一般来说,我们为了得到更完整的结果,我们需要从两个或更多的表中获取结果,我一般都是用select xxx,xxx from 表1,表2 where 表1.xxx=表2.xxx,我们一般都是进行的是这般...
  • wj123446
  • wj123446
  • 2016-10-20 10:55:27
  • 27260

MySQL的联合查询和子查询

MySQL的联合查询和子查询 @ sunRainAmazing 联合查询 联合查询 将多次查询(多条select语句),在记录上进行拼接(字段不会增加) 基本语法 ...
  • sunrainamazing
  • sunrainamazing
  • 2017-04-03 22:09:33
  • 591

mysql两表联合查询,一对多

t_user表如下 cj表如下: 要获得的查询结果: 解决办法: select cjc.uid,u.uname,cjc.数学,cjc.英语,cjc.语文,u.type from   (s...
  • superit401
  • superit401
  • 2017-03-09 09:50:19
  • 6872

MySQL SQL多表关联查询最佳实例

  • 2016年12月07日 13:26
  • 537KB
  • 下载

MySQL优化系列(二)--查找优化(2)(外连接、多表联合查询以及查询注意点)

继续这一系列,上篇的简单查询优化并没讲完,第二点还有查询注意点以及多表查询优化呢!! 文章结构:(1)多表查询步步优化;(2)查询编写的注意点。 主要是内连接,外连接,交叉连接的详解(配图)。以及罗列...
  • Jack__Frost
  • Jack__Frost
  • 2017-06-29 22:11:46
  • 2759

mysql 三张表联合查询

mysql 三张表查询
  • tengdazhang770960436
  • tengdazhang770960436
  • 2016-03-30 17:42:00
  • 4777

mysql 两表联合查询数据多了很慢

1、不要直接去关联表名查询,在关联表外加个select查询。 select * from tab1 a inner join (select * from tab2) b on a.fld1=b.f...
  • yehaifanxing
  • yehaifanxing
  • 2017-08-24 17:43:17
  • 1568
收藏助手
不良信息举报
您举报文章:MySQL之子查询与联合查询
举报原因:
原因补充:

(最多只允许输入30个字)