gpt4 book ai didi

MySQL:有没有办法在一个查询中更新整个表?

转载 作者:可可西里 更新时间:2023-11-01 07:04:00 28 4
gpt4 key购买 nike

我需要更新一个表的所有记录(不应超过 100 条记录)。每条记录都需要用不同的值更新一个字段。

我是否必须对每个更新进行查询,还是有其他方法?我似乎想不通一下子做这件事

感谢您的帮助!

编辑:澄清一下,我正在更新的每个字段都将包含一个在客户端确定的唯一值。因此不涉及其他表。

最佳答案

答案在很大程度上取决于新值的来源。

如果您有一个简短的新值列表,您可以使用 CASE:

UPDATE Table1
SET column1 = CASE column1
WHEN 123 THEN ?
WHEN 456 THEN ?
ELSE ?
END;

如果新值列表很长,这是不切实际的。

如果您需要使用存在于另一个表的相关行中的值来更新您的行,您可以使用 MySQL 的多表 UPDATE 语法:

UPDATE Table1 JOIN Table2 ON (Table1.pk = Table2.fk)
SET Table1.column1 = Table2.column2;

您还可以对相关子查询执行类似的操作。

UPDATE Table1 SET column1 = (SELECT column2 FROM Table2 WHERE Table2.fk = Table1.pk);

很久以前,当我使用 MySQL 3.23(在它支持多表更新或子查询之前)时,我会运行一个 SELECT,它的输出是完整的 UPDATE 语句。要让所有引号都正确是很棘手的,但结果是一个包含数百个单独的 UPDATE 语句的 SQL 脚本,每个语句都在一行中更改值。效率不是很高,但如果只是偶尔需要这样做,那很好。

SELECT CONCAT(
'UPDATE Table1 SET column1 = ', QUOTE(Table2.column2),
' WHERE pk = ', Table2.fk, ';') AS SQL_statement
FROM Table2;

关于MySQL:有没有办法在一个查询中更新整个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003200/

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