【发布时间】:2017-08-22 19:15:54
【问题描述】:
我有以下数据。
TRACK_ID CT_ID IMAGE_SORT_NO IMAGE_LEVEL
132071 63461 1 image_1
132081 63461 2 image_2
132091 63461 3 image_3
Image_sort_no 是主键。每个 image_sort_no 都有一张图片。我必须交换 1 到 3 和 3 到 1 的值。我的预期输出看起来像
TRACK_ID CT_ID IMAGE_SORT_NO IMAGE_LEVEL
132071 63461 1 image_3
132081 63461 2 image_2
132091 63461 3 image_1
如果我运行以下更新语句,则会丢失 1 的 image_level。
Update cd_offender
set image_level = image_3
Where IMAGE_SORT_NO = 1;
如何在不丢失任何内容的情况下交换值?
【问题讨论】:
-
我不想做硬编码。简单来说,我必须将第一个值与最后一个值交换。
-
如果每个 ct_id 有 4 条或 5 条或更多条记录呢?只是第一个和最后一个被交换?
-
可以,只需要先和后交换即可。
-
那么,image_sort_no 不仅是 1-3,还可以有更多?在 first 和 last 之间,image_level 不会改变?
标签: sql oracle sql-update