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)
这是查询的输出:

但最新记录TheaterNews更新:
SELECT OwnerID,NewsTitle,NewsCreationDate,NewsTitle,NewsEnglishName
FROM TheaterNews
ORDER BY NewsCreationDate DESC
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?即使用另一种方法.
在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)