我有一个查询,其中单个选择从表中提取最新结果 . 所以我有id desc的选择顺序,所以最新的是top,然后使用rownum来显示最高的数字 . 每个选择都是我想要最新结果的不同地方 .
但是,我遇到的问题是order by不能在union all的select语句中使用 .
select 'MUHC' as org,
aa,
messagetime
from buffer_messages
where aa = 'place1'
and rownum = 1
order by id desc
union all
select 'MUHC' as org,
aa,
messagetime
from buffer_messages
where aa = 'place2'
and rownum = 1
order by id desc;
每个选择必须有订单,否则它不会拉最新版本 . 完全做到这一点有什么不同的想法,或者用联盟做到这一点的方法可以得到我想要的结果吗?
3 回答
通过在
order by
子句之前放置where .. and rownum = 1
条件,您将不会产生所需的结果,因为结果集将在where
子句应用后排序,因此在结果集中只排序一行,该行可以是查询返回的任何第一行 .此外,在
union all
子句之前放置order by
子句在语义上是不正确的 - 您将需要一个包装器select语句 .您可以按如下方式重写sql语句:
这是第二种方法:
试试这个
为了在所有子查询中使用ORDER BY和UNION ALL,我们可以使用下面的查询 .