我尝试了这个请求:
UPDATE studentTble e SET e.oStudent.oPerson.oAddr.city='UK' WHERE rownum = 2
ID NAME STREET CITY
100 --------Henrry.Student-----ST 17.---NY
101 --------Samm.Student-------ST 17D.--OR
102 --------Hanna.Student------ST 25D.--MX
答案 0 :(得分:0)
WHERE rownum = 2
这不是ROWNUM的工作原理。除非Oracle将rownum分配给第一行,否则Rownum不会增加到2。因此,WHERE ROWNUM = 2
将返回无行,因为在这种情况下,rownum永远不会超过1。
如何更新oracle11g中的第二行?
除非您有一组有序的行,否则没有任何内容称为第N 行。在您的情况下,如果您在 ID 列上有明确的 ORDER BY ,默认情况下会按升序排列,那么您可以从子查询中选择第二行强>
UPDATE studenttble e
SET e.ostudent.operson.oaddr.city = 'UK'
WHERE id = (SELECT id
FROM (SELECT id,
ROWNUM rn
FROM (SELECT id,
ROWNUM rn
FROM studenttble
ORDER BY id))
WHERE rn = 2)
您还可以使用 ANALYTIC ROW_NUMBER()为按ID列排序的每一行分配排名。