这个恐怕实现不了,至少需要两条SQL语句来实现.
use select ... into newtable,然后关联两个表进行update.

解决方案 »

  1.   

    update a set value =
      (select substr(b.value,instr(b.value,'@')+1) value
         from
          (select c.id,(c.value||'@'||(select value from a where id = 2)) value        
           union
           select d.id,(d.value||'@'||(select value from a where id = 1)) value
             from a d where d.id = 2
           union
           select e.id,e.value from a e where e.id not in (1,2)
           ) b where b.id = a.id)
    /我知道上述语句有很多缺陷,比如他只能更改id =1和id =2 的内容,还得要求value里面没有特殊字符'@',还有要求id唯一,希望对你的思路有所帮助。另外,我不禁要问,为什么非要一条sql语句,考验大家的sql能力?
      

  2.   

    谢谢大家的参与因为我要根据ID排序,用户可以调整顺序,调整顺序时,我就互换Id的值,各位有没有高见?
      

  3.   

    如果是这样,我想你的ID字段就不能是自增的了,应该由程序来控制ID字段的增加,这样当用户调整顺序时,你就可以方便的进行控制了,你可以将两个要互换的纪录的ID进行互换,而不需要互换其他的字段