gpt4 book ai didi

mysql - 尝试使用 mysql 更新不同表中的列

转载 作者:可可西里 更新时间:2023-11-01 06:45:30 24 4
gpt4 key购买 nike

我通过这个查询抓取了 1000 条数据记录:

SELECT
RIGHT(tagarr, LENGTH(tagarr) - LENGTH('encoder:')) enc, mo.src_ip, mo.datacenter
FROM
logical_service ls, mpeg_out mo, UNNEST(ls.tags) AS tagarr
WHERE
tagarr LIKE 'encoder:%'
AND mo.lid = ls.lid

这会创建如下所示的 3 列数据:

encoder | src_ip | datacenter

然后我有一个包含字段的编码器

encoder | output_source_ip | datacenter

output_source_ip 主要为空,因此如果编码器和数据中心上的选择与编码器和数据中心匹配,我想用 src_ip 更新 encoder 表中的该列。

知道我该怎么做吗?这是我尝试这样做的尝试,但肯定是坏了:

UPDATE encoder 
SET output_source_ip = (
SELECT
RIGHT(tagarr, LENGTH(tagarr) - LENGTH('encoder:')) encoder, mo.src_ip, mo.datacenter
FROM
logical_service ls, mpeg_out mo, UNNEST(ls.tags) AS tagarr
WHERE
tagarr LIKE 'encoder:%'
AND mo.lid = ls.lid
);

最佳答案

我会在这里使用 WITH 语句让事情看起来更干净

WITH 
source_data as (
SELECT
RIGHT(tagarr, LENGTH(tagarr) - LENGTH('encoder:')) enc, mo.src_ip, mo.datacenter
FROM
logical_service ls, mpeg_out mo, UNNEST(ls.tags) AS tagarr
WHERE
tagarr LIKE 'encoder:%'
AND mo.lid = ls.lid )

UPDATE encoder as en
SET output_source_ip = (
select src_ip from source_data as sd
where sd.datacenter = en.datacenter and sd.encoder = en.encoder
)

这应该可以为您完成工作

关于mysql - 尝试使用 mysql 更新不同表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798887/

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