Mysql 递增序列号最大的列的值
我有一个表(table_name),其中的列是Sno、count。count的默认值为1。 如果要增加Sno所在的count列的值,请说1Mysql 递增序列号最大的列的值,mysql,sql,Mysql,Sql,我有一个表(table_name),其中的列是Sno、count。count的默认值为1。 如果要增加Sno所在的count列的值,请说1 UPDATE table_name SET count=count+1 where Sno=1; 它工作 但是如果我想增加count的值,其中Sno是Max呢 Sno count 1 2 2 1 基本上,我需要帮助创建以下混合: UPDATE table_name SET count=count+1 where Sno=1; & 比如
UPDATE table_name SET count=count+1 where Sno=1;
它工作
但是如果我想增加count的值,其中Sno是Max呢
Sno count
1 2
2 1
基本上,我需要帮助创建以下混合:
UPDATE table_name SET count=count+1 where Sno=1;
&
比如:
update table_name
set count = count+1
where sno = (select max(sno) from table_name)
是显而易见的方法(在大多数RDBMS中都有效),但在MySQL中不起作用:
无法为FROM子句中的更新指定目标表“table\u name”
有关有效的方法,请参见基于联接或进一步间接寻址的答案。使用以下方法:
UPDATE table_name t1
INNER JOIN (SELECT MAX(t2.Sno) AS max_Sno
FROM table_name t2) AS t3 ON t3.max_Sno = t1.Sno
SET t1.count = t1.count + 1;
我还没有测试过这个,我正在打电话,但我认为你需要为此而跳出一个恼人的圈套 对要更新的表使用子查询,但通过将子查询嵌套在另一个子查询中,对MySQL“隐藏”该事实
UPDATE
table_name
SET
count = count + 1
WHERE
Sno = (SELECT Sno FROM (SELECT MAX(Sno) AS Sno FROM table_name) deref)
JOIN
方法也有效(来自@MadhurBhaiya),如下所示
MySQL不允许您这样做。您正在从正在写入的表中读取数据,并出现错误
您无法在from子句中为更新指定目标表“table\u name”
@MatBailie继续尝试并避免MySQL的另一个原因!(有一天我可能会成功!)MySQL 8看起来很有希望。MySQL说:#1093-表“Table_name”被指定两次作为“UPDATE”的目标和单独的数据源。
UPDATE
table_name
SET
count = count + 1
WHERE
Sno = (SELECT Sno FROM (SELECT MAX(Sno) AS Sno FROM table_name) deref)