sql查询记录数结果集某个区间内记录
SQL 查询 记录 结果 某个 区间
2023-06-13 09:14:41 时间
以查询前20到30条为例,主键名为id
方法一:先正查,再反查
selecttop10*from(selecttop30*fromtablenameorderbyidasc)Aorderbyiddesc
方法二:使用leftjoin
selecttop10A.*fromtablenameA
leftouterjoin(selecttop20*fromtablenameorderbyidasc)B
onA.id=B.id
whereB.idisnull
orderbyA.idasc
方法三:使用notexists
selecttop10*fromtablenameA
whereidnotexists
(selecttop20*fromtablenameBonA.id=B.id)
方法四:使用notin
selecttop10*fromtablename
whereidnotin
(selecttop20idfromtablenameorderbyidasc)
orderbyidasc
方法五:使用rank()
selectidfrom
(selectrank()over(orderbyidasc)rk,idfromtablename)T
whererkbetween20and30
中第五种方法看上去好像没有问题,查了下文档,当over()用于rank/row_number时,整型列不能描述一个列,所以会产生非预期的效果.待考虑下,有什么办法可以修改为想要的结果.
方法一:先正查,再反查
selecttop10*from(selecttop30*fromtablenameorderbyidasc)Aorderbyiddesc
方法二:使用leftjoin
selecttop10A.*fromtablenameA
leftouterjoin(selecttop20*fromtablenameorderbyidasc)B
onA.id=B.id
whereB.idisnull
orderbyA.idasc
方法三:使用notexists
selecttop10*fromtablenameA
whereidnotexists
(selecttop20*fromtablenameBonA.id=B.id)
方法四:使用notin
selecttop10*fromtablename
whereidnotin
(selecttop20idfromtablenameorderbyidasc)
orderbyidasc
方法五:使用rank()
selectidfrom
(selectrank()over(orderbyidasc)rk,idfromtablename)T
whererkbetween20and30
中第五种方法看上去好像没有问题,查了下文档,当over()用于rank/row_number时,整型列不能描述一个列,所以会产生非预期的效果.待考虑下,有什么办法可以修改为想要的结果.
相关文章
- 2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date
- SQL开发知识:SQL Server中修改“用户自定义表类型”问题
- SQL开发知识:Oracle 12c sql 查询转换之临时表转换详解
- sql语句查询执行顺序详解数据库
- MySQL动态SQL:实现动态查询的高效方式。(mysql动态sql)
- 掌握Oracle动态SQL拼接技巧,实现查询性能优化(oracle动态sql拼接)
- Oracle 中优化SQL性能的终极指南(oracle中sql优化)
- sql探索64位Oracle数据库的SQL语言(64oracle)
- SQL数据库迁移至MySQL:实现快速导入(sql数据库导入mysql)
- 语句执行记录MySQL 查看SQL语句执行记录(mysql查看sql)
- Mysql中删除记录的SQL语句(mysql删除sql语句)
- MySQL查询分析器:解决SQL查询问题(mysql查询分析器)
- 手机快速查询SQL Server数据库(手机查sqlserver)
- SQL Server下的勤勉与哲学:改变你的思考方式(勤哲sqlserver)
- 查询SQL Server表锁情况的简单方法(sqlserver查表锁)
- 接SQL Server左外连接技术:实现多表数据查询功能(sqlserver左外连)
- 语句SQL Server中使用IN语句处理多值查询(sqlserver中in)
- Oracle SQL跟踪工具:优化SQL查询的得力助手(oracle跟踪sql工具)
- MySQL如何还原SQL文件(mysql还原sql文件)
- 将SQL查询结果存入Redis缓存(sql结果存入redis)
- 查询Oracle中SQL语句查看显示报表(oracle中sql显示)
- 使用Oracle SQL进行批处理分析(oracle sql跑批)
- 使用Oracle SQL实现数据表查询(oracle sql查表)
- 在查询结果中添加一列表示记录的行数的sql语句
- SQL查询日志查看数据库历史查询记录的方法
- Sql学习第三天——SQL关于CTE(公用表达式)的递归查询使用
- 探讨:MySQL中如何查询当前正在运行的SQL语句