gpt4 book ai didi

mysql - 从表中选择,更新选择的行

转载 作者:行者123 更新时间:2023-11-29 05:06:35 24 4
gpt4 key购买 nike

我正在尝试编写一个查询,根据参数从某些行中选择值,然后进行一些计算并返回结果。我还需要更新所选的行。我只能想办法通过单独的查询来执行这两项操作,但有没有办法同时执行这两项操作?

示例查询是:

SELECT SUM(a.val1*b.val1) 
FROM a, b
WHERE a.val2 = condition1 AND b.val2 = condition2;

UPDATE a
SET a.val3 = a.val1*b.val1
FROM a INNER JOIN b ON a.val2 = condition1 AND b.val2 = condition2;

有没有办法把它们结合起来?

最佳答案

没有。 SQL 中没有允许您检索值并在同一查询中更新它们的语法。使用 SELECT 检索值并使用 UPDATE 更改它们。

您可以在 UPDATE 语句中使用 SELECT 作为计算的一部分,但结果不会是已更新内容的值,而只会是已更新的行数。

您的 SELECT 语句中有一个小错误,应该如下所示:

SELECT SUM(a.val1*b.val1) FROM a, b WHERE a.val2 = 1 and b.val2 = 1;

这只返回一行:表 a 和表 b 中 val1 列的乘积之和,其中 val2 列满足某些条件。

目前尚不清楚您试图通过使用此结果更新表 a 来实现什么。如果您希望将表 a 中的 val3 设置为表 a 和 b 中的 val1 的乘积,如果这些表中的 val2 满足特定条件,则以下内容可能有效,但您需要在两个表中的列之间添加一个连接,否则 val3 将设置为表a中的val1和表b中所有val1值的乘积,这可能不是你想要的。

UPDATE a
SET a.val3 =
(
SELECT a.val1*b.val1
FROM b
WHERE b.key = a.key
AND b.val2 = condition2
)
WHERE a.val2 = condition1;

关于mysql - 从表中选择,更新选择的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46672196/

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