Mysql 最大不工作的内部联接
我有下表,我试图通过以下查询增加ref列的值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
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中进行