不同的SQL平台,如何取前百分之N的记录?
SQL数据库开发
共 2468字,需浏览 5分钟
·
2021-03-26 08:35
击关注上方“SQL数据库开发”,
设为“置顶或星标”,第一时间送达干货
SELECT
TOP 10 PERCENT
*
FROM City
ORDER BY ID DESC
ROWNUM是按照记录插入时的顺序排序的 ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM ROWNUM不能用基表名作为前缀 在使用ROWNUM进行查询时,请注意:
SELECT COUNT(*) CNT FROM City
SELECT 0.1*COUNT(*) CNT FROM City
SELECT * FROM CITY
WHERE ID IN
(
SELECT ID FROM
(
SELECT ID FROM CITY ORDER BY ID DESC
)
WHERE ROWNUM < (SELECT COUNT(*)*0.1 FROM CITY)
)
SELECT * FROM
(
SELECT *,
ROW_NUMBER() OVER(ORDER BY ID DESC) rn
FROM City
ORDER BY ID DESC
) a
WHERE a.rn<=(SELECT 0.1*COUNT(*) FROM City)
SELECT
A.*,
@row_num:=@row_num+1 AS ROW_NUM
FROM
City A , (SELECT @row_num:=0) B
ORDER BY ID DESC
SELECT * FROM
(
SELECT
A.*,
@row_num:=@row_num+1 AS ROW_NUM
FROM
City A , (SELECT @row_num:=0) B
ORDER BY ID DESC
) C
WHERE C.ROW_NUM<=(@row_num*0.1)
SQL Server的TOP PERCENT Oracle的ROWNUM,子查询排序 ROW_NUMBER() OVER() MySQL的变量
最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
数据前线
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群
记得帮忙点「赞」和「在看」↓
谢谢啦
评论