UNION ALL的排序分页问题
来源:互联网 发布:拍照测量尺寸软件 编辑:程序博客网 时间:2024/05/15 14:10
SQLSERVER中分页语句通常需要排序,如果同时要对UNION ALL子句排序的话就会遇到一些问题.
有一个很简单的SQL,它实现了按C_A排序并且分页.
SELECT C_A, C_B, C_C FROM T_AORDER BY C_A OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY
但是需求有了变化,查询的SQL变成T_A+T_B,用上了UNION ALL,依然要按C1排序并且分页,但是T_A的结果必须在T_B前面,无脑一想改成了这样…
( SELECT C_A, C_B, C_C FROM T_A ORDER BY C_A )UNION ALL ( SELECT C_A, C_B, C_C FROM T_B ORDER BY C_A )
突然发现UNION ALL子句里面不能加ORDER BY,这…瞬间就不爽了…,一时没招百度了下,得到下面改法.
SELECT * FROM ( SELECT TOP 99.999999 PERCENT C_A, C_B, C_C FROM T_A ORDER BY C_A ) TMP1UNION ALL SELECT * FROM ( SELECT TOP 99.999999 PERCENT C_A, C_B, C_C FROM T_B ORDER BY C_A ) TMP2
TOP 100 PERCENT排序还会失效,所以用了99.999999,太丧心病狂了.
紧接着一想,不对啊,我还要分页啊,分页里面还得加排序,那么在子句里面排序还有个毛用,白忙一场…想出上面方法的大神用tempdb来解决,真心接受不了.
后来…我决定这么干.
( SELECT C_A, C_B, C_C, 0 AS TMP_ORDER FROM T_A )UNION ALL ( SELECT C_A, C_B, C_C, 1 AS TMP_ORDER FROM T_B ) ORDER BY TMP_ORDER, C_A OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY
我这智商也就能想出这种办法了,算是解决问题了…
1 0
- UNION ALL的排序分页问题
- UNION ALL 的排序问题
- Oracle Union/Union all 的排序问题
- union all 排序问题
- MySQL union all排序问题
- 在union all的视图中怎么解决分页问题
- 在union all的视图中怎么解决分页问题
- [唐胡璐] - SQL UNION All 排序问题
- 分页加union all
- 关于ORACLE UNION ALL 遇到的问题
- UNION ALL ORDER BY的问题
- 分表后多表,UNION 和UNION ALL查询分页
- mysql UNION ALL查询分页
- 大数据下union all的视图分页解决方案
- SQL 2000 UNION ALL 子查询增加排序列报错问题
- union/union all的用法
- union/union all的用法
- union, union all 的用法
- hdu 4747 Mex(线段树区间更新+二分)
- Java____随机数+时间戳+拼接=图片命名
- git一些命令
- Ubuntu下修改本机名称
- 关于问题ld:library not found for -lXXX 和ld:warning:directory not found option 以及duplicate symbol的解决办法
- UNION ALL的排序分页问题
- samba的安装步骤
- STM32 复用 与 重映射(USART Remap)
- C# 多线程的自动管理(线程池)
- Jsoup 解析Html源码实例
- 读书笔记摘要
- 1002
- 什么时候容易产生恋情?
- PHP常用的文件操作函数集锦