【发布时间】:2010-02-18 09:05:36
【问题描述】:
IR.DOC_ID D.DOC_ID D.WORK_ID I.WORK_ID I.DATE_SUB IR.DATE_SUB
1812450 1812450 8521 8521 11-AUG-09
1812301 1812301 8521 8521 11-AUG-09
1812400 1812400 8521 8521 11-AUG-09
1814250 1814250 8521 8521 12-AUG-09
1822300 1822300 8521 8521 18-AUG-09
1814301 1814301 8530 8530 12-AUG-09
1814300 1814300 8530 8530 12-AUG-09
1842250 1842250 8554 8554 08-SEP-09
1888400 1888400 8841 8841 11-JAN-10
1889250 1889250 8841 8841 20-JAN-10
鉴于上述数据,我需要使用该 I.work_id 的最早 IR.date_sub 更新 I.date_sub(即对于 work_id 8521,I.date_sub 应该是 11-AUG-2010)。
虽然以下代码有效,但我想知道是否有另一种更新“I”表的方法。我对 IR.date_sub 字段的排序没有信心。
UPDATE i
SET i.date_sub = (SELECT min(ir.date_sub)
FROM ir, d
WHERE ir.doc_id = d.doc_id
AND d.work_id = i.work_id
AND rownum <= 1)
谢谢。
【问题讨论】:
-
糟糕,对不起。由于 Min 功能,我总是会得到最早的日期。还是谢谢。
-
您应该在更新语句中取出“rownum”。
标签: sql oracle sql-update