【发布时间】:2015-02-25 08:17:44
【问题描述】:
我希望下面的查询删除此选择查询返回的相同行:
select emp_id, row_number(), over() as row_num from employee order by date_z desc
删除查询:
delete from ( select emp_id, row_number(), over() as row_num from employee order by date_z desc ) where row_num < 100
但是当嵌套查询时,row_num 的顺序完全颠倒了。 所以,我最终删除了最后 100 行而不是前 100 行。
对我有用的可能解决方案是:
delete from ( select emp_id, row_number(), over(order by date_z desc) as row_num from employee order by date_z desc ) where row_num < 100
但我浏览的大多数网络链接都表明,将 order by 子句放在 over 并不能确保正确的顺序。实现这一目标的正确方法是什么?
【问题讨论】:
-
仅供参考,当 where 子句从查询中删除时,顺序会变好。
标签: db2 sql-order-by rownum