[英]Update Oracle Table using rownum and order by
我正在嘗試更新oracle表中的字段,但我只想根據creationdate字段升序的順序來更新75行。
到目前為止,這是我所擁有的,但是沒有用。
UPDATE extractcandidate
SET process = 15
WHERE process IN
(Select process from extractcandidate where process = 1500 and rownum <=75 order by creationdate);
如@Gordon所述,您需要在ROWNUM
之前執行ORDER BY
。
首先,按creationdate
排序:
SELECT *
FROM extractcandidate
WHERE process=1500
ORDER BY creationdate;
其次,將數量限制為75:
SELECT *
FROM (
SELECT *
FROM extractcandidate
WHERE process=1500
ORDER BY creationdate
)
WHERE rownum <= 75;
現在,您可以將其輸入到UPDATE
。 為了找到正確的行,通常會使用主鍵列。 您的情況似乎不存在這種情況,因此您可以使用Oracle的內部ROWID
:
UPDATE extractcandidate
SET process=15
WHERE rowid IN (
SELECT ri
FROM (
SELECT rowid as ri
FROM extractcandidate
WHERE process=1500
ORDER BY creationdate
)
WHERE rownum <= 75
);
您需要一個附加的子查詢來使您的方法起作用:
UPDATE extractcandidate
SET process = 15
WHERE ec.process = 1500 AND
creationdate IN (SELECT ec.creationdate
FROM (SELECT ec.*
FROM extractcandidate ec
WHERE ec.process = 1500
ORDER BY ec.creationdate
)
WHERE rownum <= 75
);
筆記:
rownum
之前進行排序。 process
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.