【问题标题】:Update record in DB based on parentId and min value根据 parentId 和最小值更新数据库中的记录
【发布时间】:2020-11-20 20:21:56
【问题描述】:

我有一张这样的桌子。

ID | ParentId | Level | LevelStatus
1       1         5         NULL
2       1         6         NULL
3       2         4         NULL
4       2         2         NULL
5       3         2         NULL

我需要为 parentId 的每个最小级别更新列 LevelStatus 的值 1。例如,parentId 1 的最低级别是级别 5,因此它应该只更新该记录,对于 parentId 2 它应该更新级别为 2 的记录。

我知道如何选择正确的记录。像这样的:

SELECT DISTINCT ParentId, MIN(Level) AS MinLevel
FROM TableA
GROUP BY ParentId

但是不知道怎么用它来写更新语句。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 不要根据其他表数据存储值,只会导致数据不一致。而是创建一个视图。

标签: sql sql-server sql-update


【解决方案1】:

您可以使用相关子查询:

update tablea
    set levelstatus = 1
    where level = (select min(a2.level)
                   from tablea a2
                   where a2.parentid = a.parentid
                  );

这是标准 SQL 语法,应该适用于每个数据库。 . .除了 MySQL 和 MariaDB。

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 1970-01-01
    • 2021-09-14
    • 2015-09-20
    • 2019-02-02
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多