更新 SQL 单元

问题描述 投票:0回答:1

我正在寻找一个简单的解决方案。我想更新 800 行数据。没有唯一的 ID,因此无法进行重复密钥更新。

我只显示了3行数据,但有超过800条。所以我想直接在数据库中更新产品列表的数量。

我尝试了这样的方法,但没有成功,我不知道为什么。我的代码不起作用。

UPDATE `xt_products` SET `products_quantity` = [Value-2] WHERE `products_model`= [Value-1]
('2','0'),
('3','1'),
('32','25'),

value-2 表示数据行的第二个输入 (0,1,25) value-1 表示数据行的第一个输入 (2,3,32)

当我只做一行时它有效:

UPDATE `xt_products` SET `products_quantity` = "25" WHERE `products_model`= "32" 

专栏产品型号: 产品模型 varchar(255) utf8mb4_general_ci NULL

但是我如何将数据输入到命令中?值 1 和值 2 ?

我尝试了不同的方法来解决。但我没找到。

我想直接在数据库的sql命令字段中更新。

mysql where-clause updates
1个回答
0
投票

根据您给出的示例,您可以执行以下操作:

UPDATE `xt_products` 
INNER JOIN (SELECT * 
            FROM (VALUES ROW('2','0'),
                         ROW('3','1'),
                         ROW('32','25')) as y) as x ON 
                      x.column_0 = `xt_products`.products_mode
                      AND x.column_1 = `xt_products`.products_quantity
SET `products_quantity` = x.column_1 WHERE `products_model`= x.column_2

简短说明:

查询:

SELECT * 
FROM (VALUES ROW('2','0'),
             ROW('3','1'),
             ROW('32','25')) y

返回:

column_0 第_1栏
2 0
3 1
32 25
  • 此结果是内连接到
    xt_products
  • 此内部联接的结果可用于更新所需的字段。

更多信息:

    来自 MySQL 文档的
  • 更新
  • 如何在 UPDATE 语句中连接两个表?
  • 从 mysql 中的值中选择
© www.soinside.com 2019 - 2024. All rights reserved.