增加mysql中Serial no最大的列的值

问题描述 投票:1回答:3

所以我有一个表(table_name),其列是Sno,count。 count的默认值为1.如果要增加Sno所在的count列的值,请说1 ..

UPDATE table_name SET count=count+1 where Sno=1;

有用!!!

但是如果我想增加Sno是Max的count值呢?

Sno  count
 1    2
 2    1

基本上我需要帮助创建混合:

UPDATE table_name SET count=count+1 where Sno=1;

&

select MAX(Sno) from table_name;
mysql sql database mysqli rdbms
3个回答
1
投票

使用以下内容:

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;

0
投票

我没有测试过这个,我正在打电话,但我认为你需要为这个跳过一个恼人的箍。

在您正在更新的表上使用子查询,但是通过将子查询嵌套在另一个子查询中来“隐藏”来自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


0
投票

就像是:

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

是显而易见的方法(并且适用于大多数RDBMS),但不适用于MySQL:

您不能在FROM子句中为更新指定目标表'table_name'

根据有效方法的连接或进一步间接查看答案。

© www.soinside.com 2019 - 2024. All rights reserved.