2020-12-17学习MySQL笔记

1.Union的用法

今天一题是两张表的要素用相同字段表示出来,但是两张表涉及的字段是不一样的,那么如何去实现呢?
用union
Union 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。
Union 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同.
所以用Union的原则列数列类型列顺序必须都相同
例如
查询所有教师和同学的name、sex和birthday
students表和teachers表的字段名称是不一样的,
但是
sname对应tname
ssex对应tsex
sbirthday对应tbirthday
以上字段类型也相同
所以
我们的语句为:

SELECT
	tname as name,
	tsex as sex,
	tbirthday as birthday 
FROM
	teachers UNION
SELECT
	sname,
	ssex,
	sbirthday 
FROM
	students

2.查询成绩比该课程平均成绩低的同学的成绩表。

起初代码运行后,显示
Subquery returns more than 1 row
意思是:子查询结果多于一行
后来在子查询语句前加了个any就解决了

SELECT
	* 
FROM
	scores as a
WHERE
	degree < (SELECT avg( degree ) FROM scores as b where a.cno= b.cno GROUP BY cno)
ORDER BY cno

3.关于ANY的用法

假设any内部的查询语句返回的结果个数是三个,如:result1,result2,result3,那么,
select …from … where a > any(…);
->
select …from … where a > result1 or a > result2 or a > result3;
题外话
all就是把or改成and

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值