北京SEO

sql取前几行记录语句

2019/10/10/17:35:16  阅读:2211  来源:谷歌SEO算法  标签: GDPR

本文章总结了现在常用的几种数据库获取前几条记录的sql,包括有db2,oracle,sqlserver和mysql数据库,各位可参考.

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的方式,代码如下:

  1. SELECT*FROMtmp_Transt
  2. WHEREIDIN(
  3. SELECTTOP2ID
  4. FROMtmp_Trans
  5. WHEREPO_NO=t.PO_NO
  6. ORDERBYTrans_DateDESC
  7. )

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

  1. SELECT*
  2. FROMtmp_Transt
  3. WHERE(
  4. SELECTCOUNT(*)
  5. FROMtmp_Trans
  6. WHEREPO_NO=t.PO_NOANDTrans_Date>T.Trans_Date
  7. )<2--phpfensi.com

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

  1. SELECTDISTINCTb.*
  2. FROMtmp_Transa
  3. CROSSAPPLY
  4. (
  5. SELECTTOP(2)*FROMtmp_TransWHEREa.PO_NO=PO_NOORDERBYTrans_DateDESC
  6. )b

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

  1. select*from(
  2. selectROW_NUMBER()OVER(PARTITIONBYPO_NOORDERBYTrans_DateDESC)asrowid,*
  3. fromtmp_Trans
  4. )a
  5. whererowid<=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

广告内容

sql取前几行记录语句 sql取前几行记录语句 sql取前几行记录语句

相关阅读

热门评论

昝辉Zac 昝辉Zac

Zac的SEO博客,坚持12年,优化成为生活。

总篇数171

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法