Oracle 使用特定值更新最后一个条目列
Posted
技术标签:
【中文标题】Oracle 使用特定值更新最后一个条目列【英文标题】:Oracle Update last entry column with specific values 【发布时间】:2019-12-17 12:15:29 【问题描述】:我正在尝试在 Oracle Apex 平台上更新表中的一行,更具体地说,是从具有相同序列号的最后一个条目中获取 present_indication 值,并将其作为 previous_indication 放在新行中。 我的表 HYDRO_COUNTS 是这样的:
OID,SERIAL_NUMBER,PROV_NUMBER,HDRCNTS_PREVIOUS_IND,HDRCNTS_PRESENT_IND
到目前为止,我已经尝试了很多关于使用相同的 SERIAL_NUMBER 和 PROV_NUMBER 获取最后输入的值的查询,但没有任何效果。这是我的更新查询。
UPDATE HYDRO_COUNTS
SET HDRCNTS_PREVIOUS_IND = (SELECT HDRCNTS_PRESENT_IND FROM HYDRO_COUNTS WHERE PROV_NUMBER =
:P20_PROV_NUMBER AND SERIAL_NUMBER = :P20_SERIAL_NUMBER )
WHERE OID = :P20_OID ;
【问题讨论】:
样本数据和期望的结果会有很大帮助。 例如,假设我在某个日期运行测试并将机器的指示插入到我的表中,一段时间后我再次在同一台机器上运行测试,所以我希望能够查看最后一个指示,以便将其与新指示进行比较。 【参考方案1】:如果OID
是一个始终递增的唯一列,您可以执行类似的操作
UPDATE HYDRO_COUNTS
SET HDRCNTS_PREVIOUS_IND = (SELECT HDRCNTS_PRESENT_IND
FROM HYDRO_COUNTS
WHERE PROV_NUMBER = :P20_PROV_NUMBER AND
SERIAL_NUMBER = :P20_SERIAL_NUMBER AND
OID = (SELECT MAX(OID)
FROM HYDRO_COUNTS
WHERE PROV_NUMBER = :P20_PROV_NUMBER AND
SERIAL_NUMBER = :P20_SERIAL_NUMBER AND
OID < :P20_OID)
WHERE OID = :P20_OID
【讨论】:
OID 确实是通过递增序列产生的!当我阅读您的答案时,语法和逻辑对我来说似乎都是正确的,但是由于某些未知的原因,它一直对我无能为力.. 你的代码是正确的 Bob,我在 Apex 中犯了一个错误,所以这就是它不起作用的原因。非常感谢您的帮助伙伴!以上是关于Oracle 使用特定值更新最后一个条目列的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL:使用字母数字 ID 在特定值之后选择接下来的 100 行
Pandas DataFrame 按分类列排序,但按特定类排序