一尘不染

用2个以上的表UNION覆盖按字母顺序排列的默认ORDER BY?

sql

真的很简单的问题…我有4个表,它们UNION在一起-ed像这样:

SELECT * FROM table1  
UNION
SELECT * FROM table2  
UNION
SELECT * FROM table3  
UNION
SELECT * FROM table4

如果不指定an ORDER BY,则查询将按第一列的字母升序(在我的情况下恰好是一种varchar类型)进行排序。我不想ORDER BY [Column1] DESC要么。

我只是想按与表本身相同的顺序对结果进行排序UNION。1 2 3 4

有没有简单的方法可以做到这一点?

谢谢!!


阅读 148

收藏
2021-03-08

共1个答案

一尘不染

单程

SELECT *,1 as SortOrder FROM table1  
UNION
SELECT *,2 FROM table2  
UNION
SELECT *,3 FROM table3  
UNION
SELECT *,4 FROM table4
order by SortOrder

发生的情况是您使用的是UNION,然后sql server将结果集与众不同,以便对表进行排序

UNION ALL区别吗?

2021-03-08