mysql—递增序列号最大的列的值

nzkunb0c  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(442)

我有一个表(table\u 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;

&

select MAX(Sno) from table_name;
z31licg0

z31licg01#

我还没测试过这个,我在打电话,但我觉得你需要通过一个恼人的圈套。
对要更新的表使用子查询,但通过将子查询嵌套在另一个子查询中,对mysql“隐藏”该事实。

UPDATE
  table_name
SET
  count = count + 1
WHERE
  Sno = (SELECT Sno FROM (SELECT MAX(Sno) AS Sno FROM table_name) deref)

这个 JOIN 这种方法也有效(来自@madhurbhaiya),如下所示。。。
http://sqlfiddle.com/#!9/6f7a1f6/1号楼

bjg7j2ky

bjg7j2ky2#

使用以下选项:

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;
u91tlkcl

u91tlkcl3#

比如:

update table_name
  set count = count+1
where sno = (select max(sno) from table_name)

是一种显而易见的方法(在大多数rdbms中都适用),但在mysql中却不适用:
不能在from子句中为update指定目标表“table\u name”
有关有效的方法,请参见基于连接或进一步间接寻址的答案。

相关问题