如果id是主键,或者有唯一索引,
需要两次以上update. 先把1改为某个空id(比如99999), 再把3改为1, 再把99999改为3, 后两句可以写成一个update. 
但是~~~~ 从数据库设计上来说, id(主键)最好是无意义的标识, 最好不需要去改动的.

解决方案 »

  1.   

    不是改id 我是说把id等于1的这条记录读出来存到a[]
    再把id等于3的这条记录读出来,存到b[]
    然后把  a[]存到id=3里 b[]存到id=1里
      

  2.   

    function SortDemo(){
       var l;                       // 声明变量。
    var   a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
       l = a.sort(function(x,y){
    if(new Date().getMilliseconds()%3==2)
    return 1;
    else if(new Date().getMilliseconds()%3==1)
    return -1;
    else return 0;
    alert(x);
    });                   // 排序数组。
       return(l);                      // 返回排序的数组。
    }
    alert(SortDemo());
    这个用js实现的随机排序,不知道对你有没有用。
      

  3.   

    用in()或rand(),比如:
    1:SELECT 2 IN (0,3,5,'wefwf');
    2:mysql> SELECT RAND();
            -> 0.9233482386203
      

  4.   

    原来你是要换两条数据的位置,那你选择出来之后直接UPDATE不可以吗?