mysql,多表的内外连接+子查询

表:
student
house
course

关系:student_course  多对多
student house 多对一

需求:查询房间1 的学生 都学习了什么课程

 select s.s_name,c.c_name from student s
 left outer join student_course sc on (s.sid=sc.sid)
 left outer join house h on (s.hid=h.hid)
 left outer join course c on (sc.cid=c.cid)
 where s.sid in (select sid from student) and h.hid=1;

+---------+----------+
| s_name  | c_name   |
+---------+----------+
| freedom | odijfoij |
| freedom | in2      |
| wer     | odijfoij |
+---------+----------+
时间: 2024-10-16 10:33:09

mysql,多表的内外连接+子查询的相关文章

MySQL数据库 多表查询 交叉连接 自然连接 内连接 自连接 外连接 子查询 多表查询练习 单表查询练习 𚳮

原文: http://blog.gqylpy.com/gqy/466 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

mysql数据库表间内外链接详解

1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法:select table1.column,table2.column from table1 [inner | left | right | full ] join table2 ontable1.column1 = table2.column2; inner join 表示内连接: left jo

MySQL—语法总结(2)子查询、连接、函数

比较运算符:=.>.<.>=.<=.<>.!=.<=> SELECT AVG(col_name) FROM tb_name; # 对指定字段使用聚合函数SELECT ROUND((AVG(col_name),2) FROM tb_name; # 对聚合函数结果保留两位小数SELECT col_name1,col_name2 FROM tb_name WHERE col_name1 >(SELECT ROUND((AVG(col_name),2) FRO

MySQL学习笔记(五)—— 子查询及联结

子查询: 子查询,即嵌套在其他查询中的查询.例如我们有这样几个表,顾客表,订单表,商品表,我们想知道有哪些客户买了商品A,那么我们就需要先查看哪些订单里包含了商品A,然后根据订单查出是哪些客户. mysql> select cust_id from orders where order_num in (select order_num from orderitems where prod_id = '1'); +---------+ | cust_id | +---------+ |    10

Oracle 自连接 / 外连接 / 子查询

--连接查询的三种格式 select ename, deptno,dname from emp natural join dept; select ename, deptno,dname from emp join dept using(deptno); select emp.ename, emp.deptno,dept.dname from emp join dept on emp.deptno!=dept.deptno; --自连接,将一张表当成两张表来看待 select e.ename,m

mysql 的delete from 和update子查询限制

最经做项目时发现的问题,好像在update时也有... 网上查到的资料如下: 1.使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误. mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 ); ERROR 1093 (HY000): You can't specify target table 'tab1′ for update in FROM cl

MySQL必知必会--使用子查询

子查询 版本要求 MySQL 4.1引入了对子查询的支持,所以要想使用 本章描述的SQL,必须使用MySQL 4.1或更高级的版本. SELECT语句 是SQL的查询.迄今为止我们所看到的所有 SELECT 语句 都是简单查询,即从单个数据库表中检索数据的单条语句. 查询(query) 任何SQL语句都是查询.但此术语一般指 SELECT 语句. SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询. 为什么要这样做呢? 利用子查询进行过滤 本书所有章中使用的数据库表都是关系表.

MySQL(九)DQL之子查询

一.含义 嵌套在其他语句内部的select语句称为子查询或内查询,外面的语句可以是insert.update.delete.select等,一般select作为外面语句较多,外面如果为select语句,则此语句称为外查询或主查询. 二.分类 2.1.按出现位置 select后面:仅仅支持标量子查询 from后面: 表子查询 where或having后面: 标量子查询.列子查询.行子查询 exists后面:标量子查询.列子查询.行子查询.表子查询 2.2.按结果集的行列 标量子查询(单行子查询):

分组函数 多表连接 子查询

count计数行数sum 求和 avg 求平均值 min最小值 max最大值例:elect avg(salary), avg(nvl(commission_pct, 0)) from employees; //求所有人的提成平均值 包括没有提成的 nvl:定义空值只有count(*) 会把空值统计进去 count 不会统计空值group by 根据--分组 空值不会被排除只允许出现分组的列和分组的函数例:select department_id, avg(salary) from employe