如何在DB2中从表的列中检索最后插入的值?

如何在DB2中从表的列中检索最后插入的值?,db2,Db2,我有一个request_t表,其中包含reg_number列,该列包含值。有人能帮助检索列的最后一个插入值吗?(我的数据库是DB2)您可以使用ROW\u NUMBER()函数,如下所示 SELECT ID, NAME, ROW_NUMBER() OVER () AS ROWNUM FROM YOUR_SCHEMA.YOUR_TABLE ORDER BY ROWNUM DESC FETCH FIRST 1 ROW ONLY; 我建议您使用自动增量技术ID,并使用MAX函数在所有记录中获得最后插入

我有一个request_t表,其中包含reg_number列,该列包含值。有人能帮助检索列的最后一个插入值吗?(我的数据库是DB2)

您可以使用
ROW\u NUMBER()
函数,如下所示

SELECT ID, NAME, ROW_NUMBER() OVER () AS ROWNUM FROM YOUR_SCHEMA.YOUR_TABLE
ORDER BY ROWNUM DESC FETCH FIRST 1 ROW ONLY;

我建议您使用自动增量技术ID,并使用MAX函数在所有记录中获得最后插入的记录。您如何定义最后一个?@ miR.WIDMER?我不喜欢使用自动增量IDS,因为我认为它们比内存地址小。在并发环境中仅使用
MAX()
并不总是安全的@Venugopal-有
新的\u表
,这意味着您可以获得刚刚插入的行(在同一语句中)。否则,您通常希望时间戳能够获取最后一条按时间顺序排列的记录。False。如果没有的ORDER BY,那么这将为您提供数据库返回最快的任何行。这将因负载、索引的不同而有所不同…@Clockwork Muse-我确实添加了按ROWNUM排序的
。尽管我确实同意,基于许多因素,它可能返回DB能够返回得最快的任何东西。我认为最新的书面记录将是检索最快的记录,因此我提供了该解决方案。谢谢您纠正我的错误。不,如果
OVER
子句中没有
ORDER BY
,则
ROW_NUMBER()
本身的结果是随机的。如果不指定相关基列的排序,就无法知道将得到什么,特别是因为dbs通常使用并行I/O。(在此特定情况下,您获得正确结果的几率略高,因为您可能会因为请求结果的方式而强制进行完整的表扫描。根据其他情况,这可能会锁定表一段时间,并消耗超出必要的资源。)