美文网首页
MySQL多表连接查询

MySQL多表连接查询

作者: chenxuyuan123 | 来源:发表于2021-04-10 12:02 被阅读0次

join多表查询

1.1 语法

2个表连接查询
select a.name,b.address from 
a join b
on a.id=b.id
where a.name='xxxxx'
2个表以上的连接查询
select a.name,b.address from
a join b
on a.id=b.id
join c
on c.uname=b.uno
where a.name='xxxxx'

1.2 查询一下世界上人口数量小于100w人的城市名,国家名,国土面积

SELECT city.name,country.name,country.surfacearea FROM
city JOIN country
ON city.countrycode=country.code
WHERE city.population<1000000;

1.3 查询城市shenyang,城市人口,所在国家名(name)及国土面积(SurfaceArea)

SELECT country.name,city.population,country.surfacearea FROM
city JOIN country
ON city.countrycode=country.code
WHERE city.name='shenyang';

1.4 N多表联动查询

查看每位老师讲课名称

SELECT teacher.tname,course.cname FROM
teacher JOIN course
ON teacher.tno=course.tno

统计zhang3学习了几门课

SELECT student.sname,COUNT(sc.cno) FROM
student JOIN sc
ON student.sno=sc.sno
WHERE student.sname='zhang3' GROUP BY student.sname;

查询oldguo老师教的学生名

SELECT teacher.tname,GROUP_CONCAT(student.sname) FROM
teacher JOIN course 
ON teacher.tno=course.tno
JOIN sc 
ON course.cno=sc.cno
JOIN student
ON sc.sno=student.sno
WHERE teacher.tname='oldguo';

查询oldguo所教课程的平均分数

SELECT teacher.tname,AVG(sc.score) FROM
teacher JOIN course
ON teacher.tno=course.tno 
JOIN sc
ON course.cno=sc.cno
WHERE teacher.tname='oldguo'

每位老师所教课程的平均分,并按平均分排序

SELECT teacher.tname,AVG(sc.score) FROM
teacher JOIN course
ON teacher.tno=course.tno 
JOIN sc
ON course.cno=sc.cno
GROUP BY teacher.tname 
ORDER BY AVG(sc.score) DESC;

查询oldguo所教的不及格学生姓名

SELECT teacher.tname,student.sname,sc.score FROM
teacher JOIN course
ON teacher.tno=course.tno
JOIN sc
ON course.cno=sc.cno
JOIN student
ON sc.sno=student.sno
WHERE teacher.tname='oldguo'
AND sc.score<60;

查询所有老师所教学生不及格的信息

SELECT teacher.tname,student.sname,sc.score FROM
teacher JOIN course
ON teacher.tno=course.tno
JOIN sc
ON course.cno=sc.cno
JOIN student
ON sc.sno=student.sno
WHERE sc.score<60;

查询平均成绩大于60分的同学的学号和平均成绩

SELECT student.sno,student.sname,AVG(sc.score)  FROM
student JOIN sc
ON student.sno=sc.sno
GROUP BY student.sno
HAVING AVG(sc.score)<60;

##聚合函数一定要在group by后面做条件,不能直接where avg(sc.score)<60

相关文章

  • 深入浅出MySQL(五)

    多表查询 MySQL中的多表联查 MySQL中多表查询分为三种形式: 笛卡尔积的形式 内连接的形式 外连接的形式 ...

  • 多表联合查询

    MySQL中基本的多表连接查询教程Mysql脚本之家 var tougao="goldensun";var lmn...

  • Mysql多表查询

    Mysql多表查询,知识点包括: 笛卡尔积查询[1] 内连接[^2] 外连接(左外连接、右外连接)[^3] uni...

  • mysql使用 from两表查询与join两表查询区别

    在mysql中,多表连接查询是很常见的需求,在使用多表查询时,可以from多个表,也可以使用join连接连个表这两...

  • MySQL多表连接查询

    多表连接 语法:SELECT table1.column, table2.columnFROM table1,...

  • MySQL多表连接查询

    join多表查询 1.1 语法 1.2 查询一下世界上人口数量小于100w人的城市名,国家名,国土面积 1.3 查...

  • SQL之多表查询

    多表查询 MySQL不支持full join ,可以使用union连接两条查询语句,实现全连接(查询并集)例如:s...

  • SQL语句常用命令整理---多表查询

    多表查詢之关连查询 多表数据连接查询,简称连接查询。本篇我们来一同学习多表连接查询的相关用法,主要內容有: 内连接...

  • MySQL 基础 6 多表查询

    1.1 多表查询的概述 1.1.1 多表查询的分类 1.1.1.1连接查询 交叉连接:cross join交叉连接...

  • MySQL 基本内容

    MySQL的基础 MySQL 数据类型 SQL mode 多表查询代价高一张表——>两个表——>需要连接连接 需要...

网友评论

      本文标题:MySQL多表连接查询

      本文链接:https://www.haomeiwen.com/subject/okdwkltx.html