gpt4 book ai didi

MYSQL更新表设置列等于同一表中的选择列

转载 作者:行者123 更新时间:2023-11-29 09:41:03 25 4
gpt4 key购买 nike

我的数据库中有一个新列,我需要用一个特定行中同一列的值填充它。我想创建一个功能“复制到全部”

例如,为第一行中的所有产品添加相同的价格:

ID   NAME   PRICE
1 PROD1 5
2 PROD2 0
3 PROD3 0
4 PROD4 0

我正在尝试选择第一行 (ID 1) 的价格并将其复制到所有其他行。

我已经尝试过:

UPDATE PRODUCTS SET PRICE = (select PRICE from PRODUCTS where ID = 1);

我想以这个结束

ID   NAME   PRICE
1 PROD1 5
2 PROD2 5
3 PROD3 5
4 PROD4 5

但我收到此错误:

 Table 'PRODUCTS' is specified twice, 
both as a target for 'UPDATE' and as a separate source for data

我尝试分别指定每个表

UPDATE PRODUCTS as a SET a.PRICE = (select b.PRICE from PRODUCTS as b where b.ID = 1);

但我遇到了同样的错误。

 Table 'a' is specified twice, 
both as a target for 'UPDATE' and as a separate source for data

也许我必须创建一个临时表并从中复制?关于如何实现这一点有任何提示吗?谢谢。

最佳答案

您可以通过嵌套选择查询来做到这一点:

UPDATE PRODUCTS 
SET PRICE = (
select PRICE from (select PRICE from PRODUCTS where ID = 1) t
);

请参阅demo .
另一种方法是使用 self 交叉连接:

UPDATE PRODUCTS p CROSS JOIN (
select PRICE from PRODUCTS where ID = 1
) t
SET p.PRICE = t.PRICE;

请参阅demo .

关于MYSQL更新表设置列等于同一表中的选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56614504/

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