【问题标题】:How to update to max value of field +1?如何更新到字段+1的最大值?
【发布时间】:2016-03-30 01:47:10
【问题描述】:

我需要将表 myTable 中记录中的字段 myField 更新为同一字段的最大值 +1。

我尝试了以下查询:

UPDATE myTable
SET myField = max(myField)+1
WHERE myField = 121 and foriegnKey = 124

但是我得到了以下错误:

查询不包含指定表达式“myField”作为聚合函数的一部分

我在 MySQL 中找到了这个问题的答案,但它对我不起作用:

UPDATE myTable set field = 
((SELECT maxField 
FROM 
(SELECT MAX(myField) AS maxField  
FROM myTable) AS q) + 1) 
WHERE myField = 121 and foriegnKey = 124

我收到以下错误:

操作必须使用可更新的查询

【问题讨论】:

  • 几乎没有充分的理由需要这样做
  • @Strawberry,我知道。我正在修复损坏的数据库,所以我别无选择。

标签: sql ms-access


【解决方案1】:

由于您知道 MAX()+1 技术通常是一个 Bad Idea™,因此在您的特定情况下,您应该能够使用 DMax() 域聚合函数。我不是 100% 清楚你想要完成什么,但似乎你想要这样的东西:

UPDATE myTable SET myField = DMax("myField", "myTable") + 1
WHERE myField = 121 and foriegnKey = 124

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2014-01-30
    • 1970-01-01
    • 2013-07-22
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多