多个结果集union后保持各自原有排序,该怎么写SELECT

zjroland 2017-04-08 11:09:01
多个结果集union后保持各自原有排序,该怎么写SELECT

SELECT *
FROM (SELECT '002', '语文', '' FROM DUAL ORDER BY 1)
UNION ALL
SELECT *
FROM (SELECT '001', '数学', '' FROM DUAL ORDER BY 1)
UNION ALL
SELECT * FROM (SELECT '003', '英语', '' FROM DUAL ORDER BY 1)

这样写会报错误,该如何写?
...全文
4739 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
空城旧巷 2018-02-27
  • 打赏
  • 举报
回复
我写的怎么还是不对呢
zjroland 2017-04-08
  • 打赏
  • 举报
回复
果然加了一层就可以了,呵呵,多谢高手。。。
  • 打赏
  • 举报
回复
引用 7 楼 sinat_28984567 的回复:
[quote=引用 1 楼 hjywyj 的回复:]

SELECT *
  FROM (SELECT  top 99.9999999999999 percent '002' as c1, '语文' as c2, '' as c3 FROM DUAL  ORDER BY 1)t1
UNION ALL
SELECT *
  FROM (SELECT  top 99.9999999999999 percent '001' as c1, '数学' as c2, '' as c3 FROM DUAL  ORDER BY 1)t2
UNION ALL
SELECT * FROM (SELECT  top 99.9999999999999 percent '003' as c1, '英语' as c2, '' as c3 FROM DUAL  ORDER BY 1)t3

好好上班,逛什么论坛 [/quote]
二月十六 版主 2017-04-08
  • 打赏
  • 举报
回复
引用 1 楼 hjywyj 的回复:

SELECT *
  FROM (SELECT  top 99.9999999999999 percent '002' as c1, '语文' as c2, '' as c3 FROM DUAL  ORDER BY 1)t1
UNION ALL
SELECT *
  FROM (SELECT  top 99.9999999999999 percent '001' as c1, '数学' as c2, '' as c3 FROM DUAL  ORDER BY 1)t2
UNION ALL
SELECT * FROM (SELECT  top 99.9999999999999 percent '003' as c1, '英语' as c2, '' as c3 FROM DUAL  ORDER BY 1)t3

好好上班,逛什么论坛
zjroland 2017-04-08
  • 打赏
  • 举报
回复
如果是 oracle这语句就对了。。。
二月十六 版主 2017-04-08
  • 打赏
  • 举报
回复
SELECT  *
FROM    ( SELECT TOP 99.9999 PERCENT
                    '002' AS a ,
                    '语文' AS b ,
                    '' AS c
          FROM      DUAL
          ORDER BY  1
        ) t
UNION ALL
SELECT  *
FROM    ( SELECT TOP 99.9999 PERCENT
                    '001' AS a ,
                    '数学' AS b ,
                    '' AS c
          FROM      DUAL
          ORDER BY  1
        ) t
UNION ALL
SELECT  *
FROM    ( SELECT TOP 99.9999 PERCENT
                    '003' AS a ,
                    '英语' AS b ,
                    '' AS c
          FROM      DUAL
          ORDER BY  1
        ) t
zjroland 2017-04-08
  • 打赏
  • 举报
回复
sql server
卖水果的net 版主 2017-04-08
  • 打赏
  • 举报
回复
把内层查询,取一个别名 ; PS:你是 oracle 还是 sql server ?
卖水果的net 版主 2017-04-08
  • 打赏
  • 举报
回复
-- 多写一层 select * from (select * from a order by id) a union all select * from (select * from b order by id) b
  • 打赏
  • 举报
回复

SELECT *
  FROM (SELECT  top 99.9999999999999 percent '002' as c1, '语文' as c2, '' as c3 FROM DUAL  ORDER BY 1)t1
UNION ALL
SELECT *
  FROM (SELECT  top 99.9999999999999 percent '001' as c1, '数学' as c2, '' as c3 FROM DUAL  ORDER BY 1)t2
UNION ALL
SELECT * FROM (SELECT  top 99.9999999999999 percent '003' as c1, '英语' as c2, '' as c3 FROM DUAL  ORDER BY 1)t3

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧