读书人

UPDATE下不能SELECT本表的解决办法

发布时间: 2012-03-31 13:13:26 作者: rapoo

UPDATE下不能SELECT本表的解决方法
UPDATE fanwe_share SET px = (select max(px)+1 from fanwe_share) WHERE share_id = 2

我是想将某值改为当前列的最大值+1.。。。。

不过好像UPDATE下不能SELECT本表,,,,

[解决办法]
楼主要的是这个吗?试试看:

SQL code
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)
[解决办法]
UPDATE fanwe_share,(select max(px)+1 AS MA from fanwe_share) B
SET A.px =B.MA WHERE share_id = 2
[解决办法]
探讨

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

[解决办法]
select @id:=max(px) from fanwe_share;
UPDATE fanwe_share SET px=@id+1 WHERE share_id = 2;

这样不行么,你试过了? @id:=

读书人网 >Mysql

热点推荐