UPDATE fanwe_share SET px = (select max(px)+1  from  fanwe_share) WHERE share_id = 2我是想将某值改为当前列的最大值+1.。不过好像UPDATE下不能SELECT本表,,,,

解决方案 »

  1.   

    还有问一下,
    我想先用SELECT得到的值赋给变量,然后UPDATE直接调用变量,,但下面这样定不行耶,好像每条语句用“;”结束后下一条语句就调用不了这个语句的变量了。是不是呀,,其实用触发器来解决最好了,但我不会,
    select @id=max(px)  as a  from  fanwe_share;
    UPDATE fanwe_share SET px =@id+1 WHERE share_id = 2;
      

  2.   

    楼主要的是这个吗?试试看:
    mysql> select * from test;
    +------+------+
    | id   | col2 |
    +------+------+
    |    1 |    2 |
    |    2 |    1 |
    |    1 |    3 |
    |    3 |   14 |
    +------+------+
    4 rows in set (0.00 sec)mysql> select max(col2) into @col2 from test;update test set col2=@col2+10 where id=3;
    Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.03 sec)
    Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from test;
    +------+------+
    | id   | col2 |
    +------+------+
    |    1 |    2 |
    |    2 |    1 |
    |    1 |    3 |
    |    3 |   24 |
    +------+------+
    4 rows in set (0.00 sec)
      

  3.   

    UPDATE fanwe_share,(select max(px)+1 AS MA from fanwe_share) B
    SET A.px =B.MA WHERE share_id = 2
      

  4.   

    赞楼上的,好像mysql里只能用join操作来更新原表数据.
      

  5.   

    关键看你的操作是否在一个SESSION中,如果通过网页形式的管理工具,则经常是提问后SESSION也结束。
      

  6.   

    select @id:=max(px) from fanwe_share;
    UPDATE fanwe_share SET px=@id+1 WHERE share_id = 2;这样不行么,你试过了? @id:=
      

  7.   

    谢谢哈,还是CSDN的兄弟们热心,,感激不尽,