我有以下 FireBird 查询:
update hrs h
set h.plan_week_id=
(select first 1 c.plan_week_id from calendar c
where c.calendar_id=h.calendar_id)
where coalesce(h.calendar_id,0) <> 0
(意图:对于hrs
带有(非零)的记录,calendar_id
将calendar.plan_week_id
其放入hrs.plan_week_id
)
在 Oracle 中选择第一条记录的技巧是使用WHERE ROWNUM=1,如果理解正确,我不必在单独的外部查询中使用 ROWNUM 因为我“只”匹配 ROWNUM=1 - 感谢 SO 提出可能的问题已经有了你的答案;-)
这会让它
update hrs h
set h.plan_week_id=
(select c.plan_week_id from calendar c
where (c.calendar_id=h.calendar_id) and (rownum=1))
where coalesce(h.calendar_id,0) <> 0
我实际上使用“第一条记录”以及仅选择一个字段来保证我得到一个可以放入的值h.plan_week_id
。
问题:上述查询在 Oracle 下能否按预期工作?
现在,我手头没有一个填满的 Oracle DB 来运行查询。