gpt4 book ai didi

mysql - 使用 MySQL 中另一表的数据更新多行一列

转载 作者:行者123 更新时间:2023-11-29 10:36:44 25 4
gpt4 key购买 nike

假设我有一个如下所示的 table1:

CREATE TABLE IF NOT EXISTS table1
(
table1_id INT NOT NULL,
field1 INT DEFAULT NULL,
field2 INT DEFAULT NULL,

FOREIGN KEY (field1) REFERENCES fields(field_id),
FOREIGN KEY (field2) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

和表2:

CREATE TABLE IF NOT EXISTS table2
(
table2_id INT NOT NULL,
another_id INT NOT NULL,
field1 INT DEFAULT NULL,

PRIMARY KEY (table2_id , another_id),
FOREIGN KEY (another_id) REFERENCES table1(table1_id),
FOREIGN KEY (field1) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

我已在 table1_id 列中填充数据, field1 , field2表 1 和 table2_id , another_id表2.

我想要做的是填充数据 field1表2的列。问题是我希望它是值 field1来自表1或field2从表1.我希望它是随机的。如果其中一个为 NULL,则选择另一个,如果两者均为 NULL,则直接输入 NULL。

我可以简单地创建一些 UPDATES 查询并做对吗?不幸的是我不能因为 table2 有超过 5k 行并且我可以执行 5k UPDATE 查询。此外,我不太确定如何让 MySQL 如上所述随机选择 table1 的两个字段之一。让我在下面给你一个示例查询来说明它是如何的。

(我不知道如何在随机列和条件下进行选择,因此我将在查询中忽略它 - 假设在随机条件之外,结果是选择 field1)

UPDATE table2 SET table2.field1 = (SELECT table1.field1 FROM table1 WHERE table1_id = another_id) WHERE another_id = X;

我必须对许多不同的 X 重复上述操作。

所以问题是如何填写field1 of table2field1 or field2 from table1对于许多 X 值是否符合上述条件?

最佳答案

要随机选择 field1field2,或非 NULL 中的一个:

UPDATE table2 SET table2.field1 = (
SELECT
CASE
WHEN ( table1.field1 IS NULL AND table1.field2 IS NULL ) THEN NULL
WHEN ( table1.field1 IS NULL ) THEN table1.field2
WHEN ( table1.field2 IS NULL ) THEN table1.field1
ELSE IF( RAND() < 0.5, table1.field1, table1.field2 )
END CASE
FROM table1 WHERE table1_id = another_id
);

关于mysql - 使用 MySQL 中另一表的数据更新多行一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46269579/

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