1. 在MYsql中怎么写SQL语句,能取到表中按ID降序排列的前五条记录
MYSQL中查询表中按字段降序排列的前N条记录模式:
SELECT
字段名[
,
字段名...]
FROM
表名
WHERE
条件
LIMIT
数量
ORDER
BY
字段名
DESC
例如:
select id,name,email from test where age < 19 limit 5 order by id desc;
上面例子从test表查询所有age小于19的按id降序排序的前5条记录的id,name,email信息。
LIMIT限制查询数量,ORDER
BY指出按什么排序,DESC表示按降序排序。
2. sql 语句查询 前5名后5名的成绩
不知道你的是什么数据库,我用oracle的写法了。
两种办法:
分别求最大和最小,然后union all
select * from(select* from table order by 成绩) where rownum<=5
union all
select * from(select* from table order by 成绩 desc) where rownum<=5
利用排序,找到每个人的位置,然后输出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序
我用row_number()over()写一个
selecta.姓名,a.成绩 from
(select row_number()over(order by 成绩) num,姓名,成绩 from table) a where a.num<=5 or
a.num>=(select count(*)-5 from table)
我没实验,不过就算有问题也应该不大。
sqlserver的版本是啥?是2005以上么?如果是
那么利用那个row_number的应该也可以,不过为了让分数一样的人都出来,那么最好改为
这种情况是假设前五出现分数相同的话,假如前五名有六个人的情况,不过我没有输出名次,另外我上面的那种写法也可以试试,sqlserver好像也可以。
不过如果你要是sql2005以前的版本那时sqlserver还没有这几个开窗函数,那就稍微有点麻烦了。
select姓名,成绩 from
select rank()over(order by 成绩) num,rank()over(order by 成绩 desc) num_desc,姓名,成绩 from table) a where a.num<=5 or a.num_desc<=5 order by 成绩 desc
3. SQL语句:十个班里各取前五名
--创建测试数据
declare @t table(ID int,xm varchar(20),total int,banji varchar(50))
insert @t
select 1,'张一',100,'A班' union all
select 2,'张二',200,'A班' union all
select 3,'张三',300,'A班' union all
select 4,'张四',400,'A班' union all
select 5,'张五',500,'B班' union all
select 6,'张六',600,'B班' union all
select 7,'张七',700,'B班' union all
select 8,'张八',800,'B班' union all
select 9,'张九',900,'C班' union all
select 10,'张十',1000,'C班' union all
select 11,'张十一',1100,'C班' union all
select 12,'张十二',1200,'C班'
--查询
select * from @t a
where (select count(*) from @t b where b.banji = a.banji and b.total > a.total) < 3
--这里是前三名,前五名只需把这里的<3改为<5即可
--结果
/*
ID xm total banji
---------------------------------------------
2 张二 200 A班
3 张三 300 A班
4 张四 400 A班
6 张六 600 B班
7 张七 700 B班
8 张八 800 B班
10 张十 1000 C班
11 张十一 1100 C班
12 张十二 1200 C班
*/
4. 从表中检索定购数量前五的产品的SQL语句怎么写
select * from OrderItem
where OrderItem.顾客号=Customer.顾客号 and OrderItem.商品号=Article.商品号
把这个先定义为A,这个表示顾客购买了商品
select * from Article where not exists A
定义为B,这个表示没有被购买的商品
select Customer.顾客号,顾客名 from Customer where not exists B
这个就清楚多了,顾客没有未购买的商品,那就是顾客买了所有商品
5. SQL语句查询前五条记录的问题
newstimes
重复的过多了吧? 用下面的代码控制吧!
sql="select top 5 * from ddcompanynews order by newstimes DESC"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
For i=1 To 5
If rs.eof Then Exit For
response.Write "输出内容"
rs.movenext
Next
rs.close
set rs=nothing
6. 如何手动找出当前数据库的top 5的SQL语句
先排序,求出前5大,再排序,取1
select top 1 * from
( select top 5 * from table_name order by col_name desc )
order by col_name asc
7. sql 查询前5项并排序
那你可以先查出前5行,然后再排序啊
select * from (select top 5 * from into)a order by i_sex ,i_age
默认就是升序排序,不用加asc
8. 用SQL列出数据库成绩的前五名学生的学号、姓名、成绩
一楼的:
select student.学号,姓名,成绩 FROM STUDENT,SCORE WHERE STUDENT.学号=SCORE.学号 ORDER BY 成绩 DESC TOP 5 (本语句适合二级) 追问(急!!!)找出各科成绩均在85分以上(含)的学生的学号、姓名 这个呢? 回答完就给分^-^
回答追问的:
select student.学号,姓名,min(成绩) 最低分,max(成绩) 最高分 FROM STUDENT,SCORE
WHERE STUDENT.学号=SCORE.学号
group by student.学号,姓名
having min(成绩)>=85