gpt4 book ai didi

mysql - 将 NULL 值替换为连接结果中的值

转载 作者:行者123 更新时间:2023-11-29 09:28:04 25 4
gpt4 key购买 nike

我有一个表,其中列的值可以为 NULL,因为这些记录是过去创建的。但现在我想更新这些记录。表格如下:

TABLE 1
id | workflowId | workflowName | workflowVersion
1 | NULL | 'name-1' | 2
2 | NULL | 'name-1' | 3
3 | NULL | 'name-1' | 3
4 | NULL | 'name-1' | 3
5 | 2 | 'name-2' | 1

TABLE2
workflowId | workflowName | workflowVersion | target
1 | 'name-1' | 2 | 'master'
2 | 'name-1' | 3 | 'master'
3 | 'name-1' | 4 | 'something'
4 | 'name-2' | 1 | 'master'

这是一个 MySQL 数据库。
TABLE1 中,我想使用实际工作流程和查询结果更新 workflowId 的所有 NULL 值:

SELECT workflowId 
FROM table2 as t2, table1 as t1
WHERE t2.workflowName = t1.workflowName
and t2.workflowVersion = t1.workflowVersion
and t2.target = 'master'

另一件事需要注意的是,TABLE1TABLE2 大得多,并且对 TABLE2 中的每条记录执行该连接会产生很大的成本。理想情况下,我还想减少解析 TABLE1 中所有记录的计算成本,查看它们在 TABLE2 中是否有对应关系并更新它们(与执行该记录相反)加入 TABLE2 中的每条记录)。
但是,只要我能找到适合我的情况的东西,我就会很高兴。

最佳答案

您似乎想要通过 join 进行更新:

update table1 t1 join
table2 t2
on t2.workflowName = t1.workflowName and
t2.workflowVersion = t1.workflowVersion
set t1.workflowId = t2.workflowId
where t2.target = 'master' and t1.workflowId is null;

关于mysql - 将 NULL 值替换为连接结果中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254228/

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