在SQL Server中使用UNION和ORDER

May*_*sam 1 sql sql-server sql-server-2008

我想要检索两个表的最新记录UNION,它返回数据,但不返回最新记录,即使是ORDER BY.这是我的疑问:

    SELECT TOP(1) OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName 
FROM TheaterNews 
    UNION
    SELECT TOP(3) OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName  
FROM MoviesNews
    ORDER BY 3 DESC
Run Code Online (Sandbox Code Playgroud)

这是查询的输出:
使用UNION输出

但最新记录TheaterNews更新:

SELECT  OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName 
FROM TheaterNews 
ORDER BY NewsCreationDate DESC
Run Code Online (Sandbox Code Playgroud)

TheaterNews表的最新记录

我怎样才能解决这个问题?即使用另一种方法.

Guf*_*ffa 7

order by适用于工会,而不是单独的查询的全部结果,这样的top结果进行排序之前应用.

使用子查询来排序单独的结果:

SELECT * FROM (
  SELECT TOP(1) OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName
  FROM TheaterNews
  ORDER BY 3 DESC
) x
UNION
SELECT * FROM (
  SELECT TOP(3) OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName
  FROM MoviesNews
  ORDER BY 3 DESC
) y
Run Code Online (Sandbox Code Playgroud)