比方說,我有這樣的數據:的Oracle SQL update語句,其中列有X啓動
ID | NAME | FRUIT
--------------------------
1 | abc_v1 | apple
2 | abc_v2 | banana
3 | abc_v3 | cherry
4 | xyz_v1 | banana
5 | xyz_v2 | grape
6 | xyz_v3 | apple
對於每一行,我想在水果列無論是該行,以取代在水果列中的值NAME中前四個字符相同的最小ID。
因此,由於前三行都有一個以「abc_」開頭的NAME,我希望所有這三行在FRUIT列中都有「apple」,因爲這是ID最低的值。同樣,我希望最後三行的FRUIT列中的值爲「banana」,這是行4中的FRUIT值,NAME以「xyz_」開頭的最低ID。
我的真實表格有16K行。每個都有一個唯一的ID,並且每個ID都有一個NAME,以與零個或多個其他行相同的四個字符開頭。
在非常糟糕的僞代碼,我想是這樣的:
UPDATE MYTABLE SET FRUIT =
(SELECT FRUIT FROM MYTABLE WHERE ID =
(SELECT MIN(ID) FROM MYTABLE WHERE NAME LIKE
[some way to represent first four characters]%));
我能做到這一點,在甲骨文單個SQL更新語句?我被困在上面括號中的部分;我覺得我需要一個循環遍歷所有行的變量,這讓我想也許我需要一個PL/SQL程序。
非常感謝幫助。謝謝!
主鍵WHERE水果LIKE SUBSTR(水果,1,4)|| '%' – kevinsky