每个需要ORDER BY子句的子查询的Tsql联合

Jon*_*ner 16 sql t-sql sql-server sql-server-2008

嗨,如果对此的答案是在其他地方我很抱歉.我环顾四周,看不出简单的解决方案.我有一个想要运行的查询.我不关心联合集的顺序,只是内部查询返回正确的数据,即"最大区域".

(SELECT TOP 5 * FROM [geo].[Areas] WHERE CountryID = @CountryID AND (TypeID = 'City')
ORDER BY [ShapeArea] DESC) as BiggestCities
    UNION ALL
(SELECT TOP 5 * FROM [geo].[Areas] WHERE CountryID =  @CountryID AND (TypeID = 'National park')
ORDER BY [ShapeArea] DESC) as BiggestParks
Run Code Online (Sandbox Code Playgroud)

但是T-sql不会让我对子查询有ORDER BY,只对整个联盟...帮助赞赏!我真的不想创建临时表或类似的东西.

Pau*_*wat 29

试试这个

SELECT * 
  FROM (SELECT TOP 5 * 
          FROM [geo].[Areas] 
         WHERE CountryID = @CountryID 
           AND (TypeID = 'City')
      ORDER BY [ShapeArea] DESC) as BiggestCities
UNION ALL
SELECT * 
  FROM (SELECT TOP 5 * 
          FROM [geo].[Areas] 
         WHERE CountryID =  @CountryID 
           AND (TypeID = 'National park')
      ORDER BY [ShapeArea] DESC) as BiggestParks
Run Code Online (Sandbox Code Playgroud)

  • 太棒了!正是我需要的.Muchas Gracias :) (3认同)