sql - 如何在sql中使用order by和union all?

标签 sql sql-server

我尝试了下面给出的sql查询:

SELECT * FROM (SELECT * 
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL 
SELECT * FROM TABLE_B 

它会导致以下错误:

The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.

我需要在 union all 中使用 order by 。我该如何实现这个目标?

最佳答案

SELECT  * 
FROM 
        (
            SELECT * FROM TABLE_A 
            UNION ALL 
            SELECT * FROM TABLE_B
        ) dum
-- ORDER BY .....

但是如果您希望将 Table_A 中的所有记录放在结果列表的顶部,则可以添加可用于排序的用户定义值,

SELECT  * 
FROM 
        (
            SELECT *, 1 sortby FROM TABLE_A 
            UNION ALL 
            SELECT *, 2 sortby FROM TABLE_B
        ) dum
ORDER   BY sortby 

关于sql - 如何在sql中使用order by和union all?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15470191/

相关文章:

java - JPA/JPQL 查询错误

PHPMyAdmin 在外键设置上抛出错误

sql-server - 加入时使用 select 语句中的列作为函数中的参数

sql - 根据日期删除一对值中的一个

php - 使用 php PDO 和 MySQL 返回行值

sql - 用 HAVING cause 和 CASE 对 GROUP BY 求和 - Postgres

java.lang.ClassCastException : org. hibernate.internal.SQLQueryImpl 无法转换为 java.util.List 如何修复

sql-server - 为什么 MS Sql 服务器的Where子句中的CASE语句

sql-server - 如何在Visual Studio中开发t-sql?

SQL 服务器查询。最迟加入