如何解决内部连接,最大无效
| 我有下表,我尝试通过以下查询增加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\'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。