Union 中使用Order by
用Union All 合并多个表时,如果要每个表都按表内某个字段排序,然后再合并成一个表(顺序不变),在UNION ALL 的每个段内可以用子查询,然后在子查询内运用TOP与ORDER BY,但是在实践的过程中,发现了一个奇怪的地方。 有以下两表 #t1: 序号??????????? -------------- 1981 ? #t2: 序号 -------------- 8046 要达到的效果: 序号 --------------------- 608 3955 说明:前五行是#t1的,后五行是#t2的,每个子表内的行都是按“序号”进行排序 当SQL语句如下所写时: select * from ? 结果是: 序号 --------------------------- 1981 ? 可以看到,并不是要求的结果。 但是如果SQL语句的写法是: select * from ? 结果达到了预期。 ? 这两段语句的差别就只在于top后面的百分数。难道是100时,SQLSERVER不管三七二十一就把全部数据取出来了,也不排序什么的?呵呵,还未找到答案。 用的SQL SERVER是2005。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续
- sql – 对可空列或单独表使用键/值表的[dis]优点是什么?
- SQL XML或JSON通过ASP.NET返回Objective-C
- SQLServer 实现rownum 的功能
- sql – 如何配置CMake目标或命令来预处理C文件?
- Dinamica SQLServer2005
- sql 左连接和右连接的使用技巧(left join and right join)
- sql2005 create file遇到操作系统错误5拒绝访问 错误1802
- ssms – 有没有办法在SQL Server Management Studio 2016中
- Powershell Invoke-Sqlcmd的错误检测并不总是有效?