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

猜你喜欢

转载自dk05408.iteye.com/blog/2091562
今日推荐