如何更新oracle11g中的第二行?
how update the second row in oracle11g?
我试过这个请求:
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
WHERE rownum = 2
这不是 ROWNUM 的工作原理。除非 Oracle 将 rownum 分配给第一行,否则 rownum 不会递增到 2。因此,WHERE ROWNUM = 2
会 return 没有行 ,因为在这种情况下 rownum 永远不会递增超过 1。
how update the second row in oracle11g?
没有什么叫做第 Nth 行,除非你有一组有序的行。在您的情况下,如果您在 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 列排序的每一行分配排名。
我试过这个请求:
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
WHERE rownum = 2
这不是 ROWNUM 的工作原理。除非 Oracle 将 rownum 分配给第一行,否则 rownum 不会递增到 2。因此,WHERE ROWNUM = 2
会 return 没有行 ,因为在这种情况下 rownum 永远不会递增超过 1。
how update the second row in oracle11g?
没有什么叫做第 Nth 行,除非你有一组有序的行。在您的情况下,如果您在 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 列排序的每一行分配排名。