SQL Server按子查询中的最大行排序

时间:2016-11-17 17:16:07

标签: sql sql-server sql-server-2016

以下查询适用于PostgreSQL,我想知道为什么它不能与SQL Server 2016一起使用。

select * from (values (1),(2)) as a(a)
UNION
(
  select * from (values (1),(2)) as a(a)
  order by 1 desc
  offset 0 rows fetch first 1 rows only
)
order by 1 desc offset 0 rows fetch first 1 rows only

任何人都可以向我解释为什么这里不支持订单?

有趣的是,以下,这是表达这一点的另一种方式,就像一个魅力

select * from (values (1),(2)) as a(a)
where a.a in(
  select * from (values (1),(2)) as a(a)
  order by 1 desc
    offset 0 rows fetch first 1 rows only
)
order by 1 desc offset 0 rows fetch first 1 rows only

这是一个错误吗?

1 个答案:

答案 0 :(得分:1)

union之后的查询需要显示为select,如下所示:

header