Mysql 最大不工作的内部联接

Mysql 最大不工作的内部联接,mysql,sql,database,Mysql,Sql,Database,我有下表,我试图通过以下查询增加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 谢谢。试试: 更新`表1` 设置'ref`= 从中选择“cur\u ref

我有下表,我试图通过以下查询增加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

谢谢。

试试:

更新`表1` 设置'ref`= 从中选择“cur\u ref” 从“表1”中选择最大'ref`+1'cur\u ref`` `计算表` 其中'name`='B' 根据:

当前,无法更新表 并从中的同一个表中进行选择 子查询

但是,很容易绕过:

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


正确的方法是省略引号,这给您带来了一个新的问题:MySQL不允许您从同一个表中更新和选择。你会在其他两个答案中找到解决方案。

你真的引用了这个表达式吗?我不知道MySQL,但这看起来很奇怪,不应该在任何其他DBMS中进行