sql 简单应用

下面应用在MySql数据库下测试通过的。
1.查询各科成绩都超过80
id name course score
------ ------ ------ --------
1 Andy 数学 70
2 Andy 英语 80
3 Lily 数学 80
4 Lily 英语 90
5 Lucy 数学 90
6 Lucy 英语 90
查询结果:
id name course score
------ ------ ------ --------
5 Lucy 数学 90
6 Lucy 英语 90

查询SQL:
SELECT * FROM student WHERE NAME IN (SELECT NAME FROM student GROUP BY NAME HAVING MIN(score)>80)


2.行列互换
2.1:列转行
id name course score
------ ------ ------ --------
1 Andy 数学 70
2 Andy 英语 80
3 Lily 数学 80
4 Lily 英语 90
5 Lucy 数学 90
6 Lucy 英语 90

查询结果:
name 数学 英语
------ ------ --------
Andy 70 80
Lily 80 90
Lucy 90 90
查询SQL:
SELECT NAME,
MAX(CASE course WHEN '数学' THEN score ELSE 0 END) 数学,
MAX(CASE course WHEN '英语' THEN score ELSE 0 END) 英语
FROM student
GROUP BY NAME


2.2 行转列
--------------------------
name 英语 数学 物理
------ ------ ------ --------
Andy 100 10 80
Lily 60 50 54

查询结果:
name course score
------ ------ --------
Andy 数学 10
Andy 物理 80
Andy 英语 100
Lily 数学 50
Lily 物理 54
Lily 英语 60
查询SQL:
SELECT * FROM (
SELECT NAME,'英语' AS course,英语 AS score FROM td
UNION ALL
SELECT NAME,'数学' AS course,数学 AS score FROM td
UNION ALL
SELECT NAME,'物理' AS course,物理 AS score FROM td )t
ORDER BY NAME,course

3.删除姓名和分数相同的项,并取ID最大的那行
id name course score
------ ------ ------ --------
1 Andy 数学 80
2 Andy 英语 80
3 Lily 数学 80
4 Lily 英语 90
5 Lucy 数学 90
6 Lucy 英语 90

查询结果:
id name course score
------ ------ ------ --------
1 Andy 数学 80
3 Lily 数学 80
4 Lily 英语 90
5 Lucy 数学 90
查询SQL:
SELECT MAX(id),NAME,score FROM student GROUP BY NAME,score
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值