gpt4 book ai didi

mysql - 基于三个表之间的联接更新表 : Help please

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

我有以下 3 个表:

storage (
id,
client,
cost, -- which have no values
col_1, -- which have no values
col_2, -- which have no values
col_3, -- which have no values
and other columns
)

output(
id,
client,
col_1,
col_2,
col_3
)

ad(
id,
client,
cost,
and other colums
)

存储表有170行,输出有50行,广告表有1000行。

我需要的是更新 storage.cost使用 ad.cost 中的值,使用 output.col_1、output.col_2 中的值更新 storage.col_1、storage.col_2、storage.col_3,output.col_3 基于 3 个表之间的客户端列连接。

如果更新查询不可能,那么我需要基于选择查询在 3 个表之间的客户端列上联接,以便我可以插入另一个表并使用该表而不是存储。我需要存储中的所有列、输出中的 col_1、col_2、col_3 以及广告表中的成本和 170 行,以便更新查询不会require,我可以使用这 170 行作为存储表。

请帮忙。

最佳答案

我认为数据库模型设计是错误的。

为什么不基于其他表创建 View v_storage:

CREATE VIEW v_storage AS 
SELECT o.client, a.cost, o.col_1, o.col_2, o.col_3, s.other_columns
FROM output AS o
JOIN ad AS a ON a.client = o.client
JOIN storage AS s ON s.client = o.client

并从存储表中删除重复的 costcol_N 列。

编辑:

但是,如果您仍然需要所提出问题的答案,您可以在 UPDATE 语句中指定多个表,并使用这些表在其中进行选择:

UPDATE storage, output, ad
SET storage.cost = ad.cost, storage.col_1 = output.col_1, ...
WHERE output.client = storage.client
AND ad.client = storage.client

关于mysql - 基于三个表之间的联接更新表 : Help please,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624402/

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