我有一个名为 Price 的 SQLite 表,如下所示:
date, productId, price
----------------------
20120601, 10 , 10.1
20120601, 20 , 20.1
20120602, 10 , 0
20120602, 20 , 0
20120602, 30 , 0
该表是使用以下语句创建的:
CREATE TABLE "Price" ("date" INTEGER NOT NULL , "productId" INTEGER NOT NULL , "price" DOUBLE, PRIMARY KEY ("date", "productId"))
我想用上一个日期相同产品的价格填写date==20120602的价格。
即我希望表格变成这样:
date, productId, price
----------------------
20120601, 10 , 10.1
20120601, 20 , 20.1
20120602, 10 , 10.1
20120602, 20 , 20.1
20120602, 30 , 0
所以我尝试了这个 SQL 语句:
UPDATE Price New SET New.price =
(SELECT old.price FROM Price Old WHERE New.date == 2 AND Old.date == 1 AND New.productId == Old.productId)
但是 SQLite 在点附近给了我一个错误。
比我试过这个说法:
UPDATE New Set New.Price = Old.Price
FROM Price New, Price Old
WHRER ......
SQLite 在 FROM 附近给了我一个错误。
我仔细检查了 SQLite 的 SQL 语法,但没有发现幸运。即使我从未尝试过,我认为这两个语句都可以在 MS SQL Server 中按预期工作。如果 New 和 Old 表太不同,第一个语句可能会起作用,但我需要它们在同一个表中。
我真的不想编写一个 for 循环来更新我的 C++ 代码中的一行,我需要有关在 SQLite 中实现此目的的正确方法的建议。
谢谢你。