gpt4 book ai didi

mysql - 如何进行将信息带过来的更新查询(MYSQL)?

转载 作者:行者123 更新时间:2023-11-29 08:14:55 25 4
gpt4 key购买 nike

好的,我有一个包含 5 列的简单表格。

ID - No - Text - Type - DependentID21 - 1 - Text1 - 824 - 2 - Text2 - 232 - 3 - Text3 - 334 - 4 - Text4 - 644 - 5 - Text5 - 733 - 6 - Text3 - 138 - 7 - Text4 - 845 - 8 - Text5 - 7

要求:系统会从上到下读取(根据 ASC 序号),如果看到 Type>3 的行,则会查找上一个最近行有 type=1 或 2 或 3,如果找到一个,则将前一个最接近的类型(1/2/3)的 ID 带入 DependentID,如果没有找到任何前一个最接近的类型 1/2/3,则它会将零放入 dependentID 中。

注意:它不会更新 type=1,2,3 的行。

所以更新后的结果将是这样的:

ID - No - Text - Type - DependentID21 - 1 - Text1 - 8 - 024 - 2 - Text2 - 2 32 - 3 - Text3 - 3 34 - 4 - Text4 - 6 - 3244 - 5 - Text5 - 7 - 3233 - 6 - Text3 - 138 - 7 - Text4 - 8 - 3345 - 8 - Text5 - 7 - 33

那么在这种情况下如何执行更新查询来获取 ID 呢?

我们可以使用 mysql 中的 session 变量来做到这一点吗?

最佳答案

您可以使用相关子查询获取先前的依赖 ID:

select t.*,
(select id
from table t2
where t2.type in (1, 2, 3) and
t2.no < t.no
order by t2.no desc
limit 1
) as NewdependentID
from table t
where t.type > 3;

(实际上,这会给出 NULL 表示不匹配,但这没关系。)

您可以将此查询放入带有联接的更新中:

update table t join
(select t.*,
(select id
from table t2
where t2.type in (1, 2, 3) and
t2.no < t.no
order by t2.no desc
limit 1
) as NewDependentID
from table t
where t.type > 3
) tdep
on t.no = tdep.no
set t.DependentID = coalesce(tdep.NewDependentID, 0);

关于mysql - 如何进行将信息带过来的更新查询(MYSQL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com