我有下表。我想根据 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 格式。我是故意这么做的。
谢谢
请注意,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';