51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5536|回复: 16
打印 上一主题 下一主题

[原创] 求好心者帮解一道有关写SQL语句的面试题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-4-7 15:04:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有两张表如下:
students
name        ID        score
张一        101        89
张二        102        90
张三        103        100       
张四        104        50

student-skill
ID        skill
101        篮球
103        篮球
104        唱歌
         
题目:
1.查询特长为篮球的学生姓名
2.显示所有学生的平均分
3.列出所有学生的全部信息,如有特长,显示特长,没有特长,则该字段显示为空
4.在students表中给有篮球特长的学生加10分
5.按从大到小的顺序列出分数大于80的前两名学生的信息
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-4-7 16:34:46 | 只看该作者
1.select name from students where id in (SELECT [id]  FROM [student-skill] where skill='篮球')
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-4-7 17:04:16 | 只看该作者
2.select AVG(scor) from students
3.select * from students  inner join [student-skill]  on students.ID=[student-skill].id
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-4-7 17:11:45 | 只看该作者
4.update students set scor=scor+10 where id in (select id from [student-skill] where skill='篮球')
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-4-7 17:17:08 | 只看该作者
5.select top (2) * from students where scor>80 order by scor asc
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-4-7 17:22:37 | 只看该作者
1
select name from students where ID=(Select ID from student-skill where skill='篮球')
2
select AVG(score) as  平均分 from students
3
bu tai hui
4
update students set scor=scor+10 where id in (select id from [student-skill] where skill='篮球')
5
select * from students where score>80  and order by score desc
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-4-7 17:25:04 | 只看该作者
xiaozhai真热心,这么快就回复了。非常感谢!
想再问下,第5问这样写对吗?select * from students where scor>80 order by scor asc limit 2
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-4-7 17:30:43 | 只看该作者
Mysql中可以用limit吧!Sqlserver中好像是不行的,看问题是在什么环境下运行,哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-4-7 17:34:22 | 只看该作者
I see  
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-4-8 12:49:57 | 只看该作者
第三题要写左连接,否则你会查不到没有特长的学生
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-4-8 13:58:12 | 只看该作者
路过!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-4-8 14:01:49 | 只看该作者
5、select  * from (select  * from students where scor>80 order by scor asc )  where  rownum<=2
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-4-9 16:16:33 | 只看该作者
1、Select name from students where ID in ( select ID from student-skill where skill='篮球');
2、select ave(score) from students;
3、
4、update students set score=score+10 where ID in  ( select ID from student-skill where skill='篮球');
5、select top 2 * from students where scor>80 order by scor desc
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-4-14 09:47:22 | 只看该作者
1.SELECT ST.NAME  FROM students ST INNER JOIN skill SK    ON ST.ID= SK.ID  AND SK.SKILL = '篮球'
2.SELECT AVG(score)  FROM students
3.SELECT ST.NAME, ST.ID, ST.SCORE, ISNULL(SK.SKILL, '')  FROM students ST LEFT JOIN skill SK    ON ST.ID= SK.ID
4.UPDATE students
   SET SCORE= SCORE + 10
WHERE ID IN (
SELECT ID
FROM skill SK
WHERE SK.SKILL = '篮球')
5.SELECT TOP(2)ST.NAME, ST.ID, ST.SCORE
FROM students ST
WHERE SCORE> 80 ORDER BY SCORE DESC
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2010-4-14 10:13:35 | 只看该作者
非常感谢各位的回贴!
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-4-14 13:08:13 | 只看该作者
第三题:select * from students  left join student_skill on students.ID=student_skill.id
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2013-8-10 14:04:10 | 只看该作者
2、select avg(score) from students
5、select top(2) * from students where score>80 order by desc
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 22:41 , Processed in 0.071068 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表