我有一个名为Device的表,现在我需要为devid 5和devid 6交换devid行的顺序。
CurrentTable
PID DEVID INID EVTYPEID EVID ALID PARMID TEXTID InputName Input2Name
1 1 0 30 0 100102 0 14 998-TCR1 998-EMG1
1 2 0 30 0 100103 0 15 998-FR 998-TCR2
9 3 0 30 0 100113 0 25 998-TCR2 998-EMG2
0 4 2 30 0 100114 0 26 998-FR NULL
8 5 18 4 53 100114 0 0 998-Sg op 998-Sg cl
4 6 17 4 53 1000114 0 0 SG_PB RA_PB
预期结果
PID DEVID INID EVTYPEID EVID ALID PARMID TEXTID InputName Input2Name
1 1 0 30 0 100102 0 14 998-TCR1 998-EMG1
1 2 0 30 0 100103 0 15 998-FR 998-TCR2
9 3 0 30 0 100113 0 25 998-TCR2 998-EMG2
0 4 2 30 0 100114 0 26 998-FR NULL
4 6 17 4 53 1000114 0 0 SG_PB RA_PB
8 5 18 4 53 100114 0 0 998-Sg op 998-Sg cl
我的表中有150列,PID和RID是主键
发布于 2017-10-17 19:57:42
您当前的select语句加上:
Order by case when DEVID = 6 then 5
when DEVID = 6 then 6
else Devid
end
不是一个很好的解决方案,而是回答了这个问题。
发布于 2017-10-17 22:49:01
你需要使用一个临时数字来转换它们。
UPDATE Device SET DEVID=-6 WHERE DEVID=6;
UPDATE Device SET DEVID=6 WHERE DEVID=5;
UPDATE Device SET DEVID=5 WHERE DEVID=-6;
如果另一个表与DEVID列有外键关系,那么它会变得更加棘手。选项:
https://stackoverflow.com/questions/46798113
复制相似问题