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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-03-04 ICSharpCode.SharpZipLib 初级使用
2022-03-04 VS2015没有打包界面,没有Visual Studio Installer