sql 取前几行记录语句

SQLITE数据库:

 代码如下 复制代码
select  * from table limit  N

db2数据库:

 代码如下 复制代码

select * from tab fetch first 10 rows only

oracle数据库:

 代码如下 复制代码

select * from tab where rownum <=10

sqlserver数据库:

 代码如下 复制代码

select top 10 * from tab

1)如果表中有主键,可以用IN的方式。

 代码如下 复制代码

SELECT * FROM tmp_Trans t
WHERE ID IN(
 SELECT TOP 2 ID
 FROM tmp_Trans
 WHERE PO_NO=t.PO_NO
 ORDER BY Trans_Date DESC
)

2)如果没有主键,可以用判断在本条记录前有多少条记录的方式。但使用这种方式时如果遇到Trans_Date相同的情况会不准。如当存在Trans_Date最大的记录有三条时,这三条记录都会查出来。

 代码如下 复制代码

SELECT *
FROM tmp_Trans t
WHERE (
 SELECT COUNT(*)
 FROM tmp_Trans
 WHERE PO_NO=t.PO_NO AND Trans_Date>T.Trans_Date
)<2

3)使用CROSS APPLY子句。CROSS APPLY是SQL Server 2005后出来的新功能,用于在表连接时传入参数。

 代码如下 复制代码

SELECT DISTINCT b.*
FROM tmp_Trans a
CROSS APPLY
(
 SELECT TOP(2) * FROM tmp_Trans WHERE a.PO_NO=PO_NO ORDER BY Trans_Date DESC
) b

2.使用自动生成的Row Number。在使用 ROW_NUMBER()时可以用PARTITION BY子句来分组。建议使用这种方式。

 代码如下 复制代码

select * from (
 select ROW_NUMBER() OVER(PARTITION BY PO_NO ORDER BY Trans_Date DESC) as rowid,*
 from tmp_Trans
) a
where rowid<=2

mysql数据库:

 代码如下 复制代码

select * from tab limit 10

注意:对Oracle的查询中 如果有如下order by子句,查询出来的数据可能不是你想要的
Oracle处理流程是:先搜索出rownum<2 的信息,再排序

 代码如下 复制代码

select table_name from t_tables where rownum<2 order by table_name desc;

需要写成如下方式:

 代码如下 复制代码

select t2.* from (select * from t_tables t order by table_name desc) t2 where rownum<2

时间: 2024-09-20 16:40:06

sql 取前几行记录语句的相关文章

mysql使用GROUP BY分组实现取前N条记录的方法_Mysql

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

MySql中取前几行数据使用limit来完成

在mysql中是没有top关键字的,不过可以用limit来完成此功能,下面举例为大家详细介绍下它的使用方法,不会的朋友可以学习下   在mysql中是没有top关键字的,在mysql中可以用limit来完成功能. order by id desc limit 10 按照id的倒序排序 取出前10条 order by id desc limit 0,10 按照id的倒序排序 取出前10条 order by id limit 5,10 按照id的正序排序 从第5条开始取10条 复制代码 代码如下:

MySql中取前几行数据使用limit来完成_Mysql

在mysql中是没有top关键字的,在mysql中可以用limit来完成功能. order by id desc limit 10 按照id的倒序排序 取出前10条 order by id desc limit 0,10 按照id的倒序排序 取出前10条 order by id limit 5,10 按照id的正序排序 从第5条开始取10条 复制代码 代码如下: SELECT cat_id FROM shop_goods_type order by cat_id desc limit 1

sqlserver分组取前n条记录

  1.前言. 这个有两种方法.1是用in,2是用row_number(),可根据情况来用.两种都可以. 2.举例. 方法1: Java代码 select a.* from table1 a where a.column1 in (select max(column1) from table1 group by a.column2,column3) 方法2: Java代码 with nyr as ( select NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX

mysql 前几条记录语句之(limit)_Mysql

MySql没有提供top方法.可是他有limit方法提供同样的功能. SELECT * FROM `tfidf` order by weight desc limit 1, 10830 SELECT * FROM `tfidf` order by weight desc limit 10

mysql 查询第几行到第几行记录的语句_Mysql

1.查询第一行记录: select * from table limit 1 2.查询第n行到第m行记录 select * from table1 limit n-1,m-n; SELECT * FROM table LIMIT 5,10:返回第6行到第15行的记录 select * from employee limit 3,1; // 返回第4行 3.查询前n行记录 select * from table1 limit 0,n; 或 select * from table1 limit n;

sql取重复记录 字段值最大的一条记录

sql取abc字段重复记录的a字段值最大的一条记录 select max(a),b,c from 表名 group by b,c 文件很简单吧. 关于max max() 函数 max 函数返回一列中的最大值.null 值不包括在计算中. sql max() 语法 select max(column_name) from table_name注释:min 和 max 也可用于文本列,以获得按字母顺序排列的最高或最低值. 合计函数 (比如 sum) 常常需要添加 group by 语句. group

SQL 合并多行记录的方法总汇_MsSql

SQL中合并多行记录的方法总汇: --1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varchar(10)) INSERT tb SELECT 1, 'aa' UNION ALL SELECT 1, 'bb' UNION ALL SELECT 2, 'aaa' UNION ALL SELECT 2, 'bbb' UNION ALL SELECT 2, 'ccc' --SELECT * FROM tb /**//* id value ---------

SQL 合并多行记录的方法总汇

SQL中合并多行记录的方法总汇: --1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varchar(10)) INSERT tb SELECT 1, 'aa' UNION ALL SELECT 1, 'bb' UNION ALL SELECT 2, 'aaa' UNION ALL SELECT 2, 'bbb' UNION ALL SELECT 2, 'ccc' --SELECT * FROM tb /**//* id value ---------