SQL操作数据库问题

eyoexply 2003-11-19 06:11:18
一个成绩表,有姓名,成绩两个表项,如何用SQL语句完成查询成绩的第一的人,如何用SQL语句完成查询成绩的第二的人??
...全文
18 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Benimarunikado 2003-11-19
  • 打赏
  • 举报
回复
楼上的思维完整性8错啊!up,up;
TRY THIS:

--根据作者需求,实现如下:

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = '成绩表')
DROP TABLE 成绩表
GO

CREATE TABLE 成绩表 (姓名 CHAR(8)NOT NULL,成绩 INT)

GO

--内容虚构,纯属自娱:

INSERT INTO 成绩表 SELECT '王晶',88
UNION ALL SELECT '楼主',89
UNION ALL SELECT '成龙',90
UNION ALL SELECT '李连杰',90
UNION ALL SELECT '周星驰',95

GO

--第一名:

SELECT 姓名,成绩 FROM 成绩表 WHERE 成绩>=(SELECT MAX(成绩) FROM 成绩表)

姓名 成绩
-------- -----------
周星驰 95

(所影响的行数为 1 行)

--第二名:

SELECT 姓名,成绩 FROM 成绩表 WHERE 成绩=(
SELECT MAX(成绩) FROM (
SELECT 姓名,成绩 FROM 成绩表 WHERE 姓名 NOT IN(
SELECT 姓名 FROM 成绩表 WHERE 成绩>=(
SELECT MAX(成绩) FROM 成绩表)))AS 成绩表temp)

姓名 成绩
-------- -----------
成龙 90
李连杰 90

(所影响的行数为 2 行)

--DROP TABLE 成绩表
steven8098 2003-11-19
  • 打赏
  • 举报
回复
因为成绩第一或者第二的人可能不止一个,所以我觉得楼上的大哥写的不大欠佳

--成绩第一的人
select 姓名 from 成绩表 where 成绩 in( select max(成绩) from 成绩表 )

--成绩第二的人
select 姓名 from 成绩表 where 成绩 in (
select max(成绩) from 成绩表 where 成绩 not in (
select 成绩 from 成绩表 where 成绩 in(
select max(成绩) from 成绩表 )) )

zjcxc 元老 2003-11-19
  • 打赏
  • 举报
回复
--查询成绩第二的人:

select top 1 * from 成绩表 where 姓名 not in(select top 1 姓名 from 成绩表 order by 成绩 desc
)
order by 成绩 desc
zjcxc 元老 2003-11-19
  • 打赏
  • 举报
回复
--查询成绩第一的人
select top 1 * from 成绩表 order by 成绩 desc
pengdali 2003-11-19
  • 打赏
  • 举报
回复
selec * from (select top 2 * from 表 order by 成绩 desc) a where 成绩<(select max(成绩) from 表)
pengdali 2003-11-19
  • 打赏
  • 举报
回复
select top 2 * from 表 order by 成绩 desc

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧