ID TYPE ORDER_INDEX CITY_ID
-----------------------------------
1 CAT 1 1 1
2 狗 2 1
3 CAT 4 2
4 狗 5 2
5BEE 9 1
對于每個城市,我需要交換cat和dog的order_index。
因此,ID為1的城市應該有貓=2和狗=1,ID為2的城市將有貓=5和狗=4。
如何用純SQL來完成這個任務?
uj5u.com熱心網友回復:
使用一個更新:
UPDATE yourTable t1
SET ORDER_INDEX = (SELECT t2.ORDER_INDEXFROM yourTable t2
WHERE t2.CITY_ID= t1.CITY_IDAND
t2.TYPE IN ('CAT'/span>, 'DOG') and and
t2.TYPE <>/span> T1.TYPE)
WHERE TYPE IN ('CAT', 'DOG') 。
上述更新邏輯假設你希望在具有相同CITY_ID的狗/貓對記錄之間進行ORDER_INDEX交換。
uj5u.com熱心網友回復:
好吧,如果你不關心ID,那么有一個簡單的選項可以做你想要的事情:
之前:
SQL> select * from test order by id。
id typ order_index city_id
---------- ------------- ----------
1 CAT 1 1
2 狗 2 1
3 CAT 4 2
4 狗 5 2
5BEE 9 1
更新:
SQL>/span> update test set
2 type = decode(type, 'DOG'/span>, 'CAT'/span>, 'DOG'/span>)
3 where type in ('CAT', 'DOG')。
4 rows更新。
之后;要求是
ID為1的城市應該有cat=2和dog=1,ID為2的城市將有cat=5和dog=4。
SQL> select * from test order by id;
id typ order_index city_id
---------- ------------- ----------
1 DOG 1 1 --> ID=1的城市有DOG=1 ...
2 CAT 2 1 --> ... and CAT = 2
3 DOG 4 2 --> ID=2的城市有DOG=4 .../span>
4 CAT 5 2 --> ... and CAT = 5
5 BEE 9 1
SQL>/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/308141.html
標籤:
