内部连接,最大无效

问题描述

| 我有下表,我尝试通过以下查询增加ref列的值。
orderid name age address ref
1       A    22  a1      1
2       B    21  b1      0

update table1
set ref = 
\'(SELECT (MAX(ref) + 1) AS max_ref FROM table1)\'
where name= \'B\'
但是,如果设置为2,则始终设置为0。 谢谢。     

解决方法

        根据MySQL文档:   目前,您无法更新表格   然后从   子查询。 但是,很容易绕开:
UPDATE table1
SET ref = (
    SELECT m.max_ref FROM (
        SELECT (max(ref) + 1) AS max_ref FROM table1) m)
WHERE name= \'B\'
    ,        您似乎正在将整数列
ref
设置为包含SQL语句的字符串:
set ref = \'(SELECT (MAX(ref) + 1) AS max_ref FROM table1)\'
当MySQL尝试将该字符串转换为整数时,它以0结尾。 正确的方法是省略4引号,这给您带来了一个新问题:MySQL不允许您更新和选择同一张表。您将在其他两个答案中找到解决方案。     ,        尝试:
UPDATE `table1`
SET `ref` = (
        SELECT `cur_ref` FROM(
                SELECT MAX(`ref`)+1 `cur_ref` FROM `table1`
        ) `calc_table`
) WHERE `name` = \'B\'