当前位置: 首页 > 面试题库 >

mysql查询将字段更新为max(field)+ 1

颛孙昆
2023-03-14
问题内容

我想做的是:

UPDATE table SET field = MAX(field) + 1 WHERE id IN (1, 3, 5, 6, 8);

在我看来,该语句的语义首先是数据库将关闭,并为我确定field全部中最大的价值是什么table。然后,它将对该值加1,并将结果值分配给field具有id1、3、5、6和8
的行的列。似乎足够简单…

但是,当我尝试运行该查询时,MySQL对此kes之以鼻,说:

ERROR 1111 (HY000): Invalid use of group function

要获得我想要的结果,您必须使用什么秘诀?

问候,维克


问题答案:

尝试

UPDATE TABLE set field = ((SELECT selected_value FROM (SELECT MAX(field) AS selected_value FROM table) AS sub_selected_value) + 1) WHERE id in (1,3,5,6,8)


 类似资料:
  • 问题内容: 愚蠢的SQL问题。我有一个这样的表(“ pid”是自动递增的主列) 实际表数据: 我想获取每个rid的最新行的PID(每个唯一的RID 1个结果)。对于样本数据,我想: 我尝试运行以下查询: 我得到: 返回的PID始终是RID的PID的首次出现(行/ pid 1是第一次使用rid 1,行/ pid 3是第一次使用RID 2,行/ pid 7是第一次使用rid 3 )。尽管返回每个rid

  • 问题内容: 我基本上只是试图更新表中的多个值。最好的方法是什么?这是当前代码: 我要包含的另一个更新是: 谢谢! 问题答案: 用逗号分隔添加多列: 但是,您没有在清理输入内容??这意味着任何随机的黑客都可能破坏您的数据库。看到这个问题:用PHP清理用户输入的最佳方法是什么? 另外,样式是数字还是字符串?我假设一个字符串,所以需要用引号引起来。

  • 问题内容: 谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值: 这是我的HTML表单: 这是我的“ editblogscript”: 我不明白为什么它不起作用。 问题答案: 您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为: 同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_esc

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 问题内容: 我想要一个触发器来对插入的记录执行以下操作: 更清楚的说:说我有一个包含三列的表:主键,整型,varchar。 当我这样插入时: 我想拥有: 但是当我省略时: 它应自动设置为此记录的: 扳机有可能吗?(我知道插入后可以更新记录,但使用触发器会更好。) 问题答案: 我不知道任何方法可以在一个语句中执行此操作,即使使用触发器也是如此。 @Lucky建议的触发器解决方案在MySQL中如下所示

  • 我需要更新我的数据库,它是基于locationId的多行软删除 当我运行查询时,我得到一个错误: 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项”中切换该选项- 正如我所知,子查询将返回两条记录,因为子查询返回两条记录更新不会发生,但我如何解决这个问题。我试图解决这个问题,但没有成功。