sql查询语句:top n的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql查询语句:top n的用法相关的知识,希望对你有一定的参考价值。
top是指按顺序选取前几个数据。orderby是属性默认升序排列(asc),如果想倒序+desc
select
*和select
all
select
1一样是选取所有(任意一个)
top
3前3个
select
查询表达式是+表中的元组中的候选码
select
no
from
no是table表中的一个码,就是唯一标示这一元组的名字,额
就是名字
不能直接用select+数字
只能用select
123
as
no 参考技术A 我不知道你的抽取人数一样不,如果要总共抽取n个人然后随机分配给每个班,则可以用下边的代码:
update
student
set
win
=
1
where
sid
in
(select
top
(select
sum(snum)
from
task)
sid
from
student
order
by
newid())
如果是每个班抽取同样的人数,或者每个班抽取不同的人数,则需要再连接个classid,然后分组计算出每个班级的sid即可,如果不会可以追问 参考技术B TOP
子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP
子句是非常有用的。
SQL
Server
的语法:
SELECT
TOP
number|percent
column_name(s)
FROM
table_name
mysql
语法
SELECT
column_name(s)
FROM
table_name
LIMIT
number
Oracle
语法
SELECT
column_name(s)
FROM
table_name
WHERE
ROWNUM
<=
number 参考技术C top
3
:根据你的排序,显示前三个记录
*:是显示所有的字段
你的错误,可能在①字段有没有②逗号应该是英文的逗号
分组后取每组内排名的Top N的SQL语句
给个MySQL例子参考
-----查询每门课程的前2名成绩
CREATE TABLE StudentGrade(
stuId CHAR(4), --学号
subId INT, --课程号
grade INT, --成绩
PRIMARY KEY (stuId,subId)
)
GO
--表中数据如下
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘001 ‘,1,97);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘001 ‘,2,50);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘001 ‘,3,70);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘002 ‘,1,92);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘002 ‘,2,80);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘002 ‘,3,30);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘003 ‘,1,93);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘003 ‘,2,95);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘003 ‘,3,85);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘004 ‘,1,73);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘004 ‘,2,78);
INSERT INTO StudentGrade(stuId,subId,grade) VALUES( ‘004 ‘,3,87);
GO
--查看数据
select * from StudentGrade
--假如出现并列时,也只取两个同学的话。
--方法一:
select distinct *
from studentgrade as t1
where stuid in
(select top 2 stuid
from studentgrade as t2
where t1.subid=t2.subid
order by t2.grade desc)
order by subid, grade desc
--方法二:
select * from StudentGrade a where (select count(1) from studentGrade where subId=a.subId and grade> =a.grade) <=2
--方法三:
select * from StudentGrade t
where (select count(1) from StudentGrade where subid=t.subid and grade> t.grade) <=1
order by subId,grade desc
--结果
drop table StudentGrade
以上是关于sql查询语句:top n的用法的主要内容,如果未能解决你的问题,请参考以下文章