MySQL Workbench - 根据多个条件更新多行

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

我有下表。我想根据 Invoice_Date 范围和产品名称更新第 1 行和第 3 行中的产品 Ball 的销售价格。

我有以下sql语法

update mydb_stock.sql_product_sales set sales_price = 7.5
where invoice_date between '20-03-2024' and '12-04-2024' and product_name = 'Ball';

上述语法无法正常工作。它只更新第一行,但后续行不会更新。

发票_日期 产品名称 销售_价格 数量 总销售额
2024年3月20日 3.5 4 14
2024年3月25日 球拍 2.0 3 6.0
12-04-2024 3.5 3 10.5

如果你们能提供帮助,我将不胜感激。请注意,invoice_date 采用 varchar 格式。我是故意这么做的。

谢谢

sql mysql-workbench
1个回答
0
投票

请注意,invoice_date 为 varchar。我是故意这么做的。

不要将您的日期存储为文本。如果您必须这样做,您至少应该以 YYYY-MM-DD iso 格式存储,以便它们正确排序。

话虽这么说,我们可以通过使用

STR_TO_DATE()
函数将发票日期转换为真实日期来解决此问题:

UPDATE mydb_stock.sql_product_sales
SET sales_price = 7.5
WHERE STR_TO_DATE(invoice_date, '%d-%m-%Y') BETWEEN '2024-03-20' AND '2024-12-04' AND
      product_name = 'Ball';
© www.soinside.com 2019 - 2024. All rights reserved.