SQL报错:order by不能直接出现在union的子句中

原文链接:https://www.cnblogs.com/xuwinwin/p/15877703.html

1、报错写法:

1
2
3
SELECT * FROM t1  ORDER BY month ASC
UNION
SELECT * FROM t2  ORDER BY month ASC

2、原因与解决办法:

order by不能直接出现在union的子句中,但是可以出现在子句的子句中。

可以通过两个查询分别加括号的方式,改成如下:

1
2
3
(SELECT * FROM t1  ORDER BY month ASC)
UNION
(SELECT * FROM t2  ORDER BY month ASC)

  这种方式的目的是为了让两个结果集先分别order by,然后再对两个结果集进行union。虽然这种方式不报错,但是两个order by并没有效果,这是因为联合查询的结果是整个查询完成后得出的,而不是将子查询挨个完成后拼接的

改成如下:

 

1
2
3
4
5
SELECT * FROM
(SELECT * FROM t1  ORDER BY month ASC) t3
UNION
SELECT * FROM
(SELECT * FROM t2 ORDER BY month ASC) t4

 

  

 

 

posted @   yinghualeihenmei  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-03-04 ICSharpCode.SharpZipLib 初级使用
2022-03-04 VS2015没有打包界面,没有Visual Studio Installer
点击右上角即可分享
微信分享提示