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

标签 sql sql-server tsql sql-server-2008

非常快的问题...我有 4 个表,它们是 UNION 组合在一起的,如下所示:

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

在不指定 ORDER BY 的情况下,查询按字母升序的第一列排序(在我的例子中恰好是 varchar 类型)。我也不想要 ORDER BY [Column1] DESC

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

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

谢谢!!

最佳答案

单向

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 有区别吗?

关于sql - 使用 2 个以上表的 UNION 覆盖按字母顺序排列的默认 ORDER BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903149/

相关文章:

c# - 将查询包含到 C# 代码中的最佳方法

sql - 使用 sql - 在 select 语句中不为 null

sql - 是否可以忽略存储过程的输出参数?

sql-server - 使用用户定义的表类型需要什么权限

sql - 在多个查询中使用 postgres CTE

MySQL Select INTO csv 文件分隔符工作不正确

sql - 什么是 postgres 替代 lower() 之类的 %

mysql - 如何指定在 MySql 中的 select * 查询输出中仅显示某些特定字段?

sql-server - 用于访问 sys.dm_db_index_usage_stats 的公共(public)存储过程

tsql - 语法错误表变量