在mysql

时间:2018-09-04 12:33:12

标签: mysql sql database mysqli rdbms

所以我有一个表(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;

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

类似的东西:

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

是一种明显的方法(在大多数RDBMS中有效), 但在MySQL中不是

  

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

查看基于联接或进一步间接的答案以找到可行的方法。

答案 2 :(得分: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