根据 parentId 和最小值更新数据库中的记录
Posted
技术标签:
【中文标题】根据 parentId 和最小值更新数据库中的记录【英文标题】:Update record in DB based on parentId and min value 【发布时间】: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
但是不知道怎么用它来写更新语句。
【问题讨论】:
用您正在使用的数据库标记您的问题。 不要根据其他表数据存储值,只会导致数据不一致。而是创建一个视图。 【参考方案1】:您可以使用相关子查询:
update tablea
set levelstatus = 1
where level = (select min(a2.level)
from tablea a2
where a2.parentid = a.parentid
);
这是标准 SQL 语法,应该适用于每个数据库。 . .除了 mysql 和 MariaDB。
【讨论】:
以上是关于根据 parentId 和最小值更新数据库中的记录的主要内容,如果未能解决你的问题,请参考以下文章