我有一个名为Price的SQLite表,如下所示:
date, productId, price
----------------------
20120601, 10 , 10.1
20120601, 20 , 20.1
20120602, 10 , 0
20120602, 20 , 0
20120602, 30 , 0
Run Code Online (Sandbox Code Playgroud)
该表是使用以下语句创建的:
CREATE TABLE "Price" ("date" INTEGER NOT NULL , "productId" INTEGER NOT NULL , "price" DOUBLE, PRIMARY KEY ("date", "productId"))
Run Code Online (Sandbox Code Playgroud)
我想用上一个日期的同一产品的价格填写日期== 20120602的价格.
即我希望桌子变成这样:
date, productId, price
----------------------
20120601, 10 , 10.1
20120601, 20 , 20.1
20120602, 10 , 10.1
20120602, 20 , 20.1
20120602, 30 , 0
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个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)
Run Code Online (Sandbox Code Playgroud)
但SQLite在dot附近给了我一个错误.
比我试过这句话:
UPDATE New Set New.Price = Old.Price
FROM Price New, Price Old
WHRER ......
Run Code Online (Sandbox Code Playgroud)
SQLite在FROM附近给了我一个错误.
我仔细检查了SQLite的SQL语法,但没有发现幸运.即使我从未尝试过,我认为这两个语句在MS SQL Server中都能正常工作.如果New和Old的表太不同,则第一个语句可能有效,但我需要在同一个表中.
我真的不想写一个for循环来更新我的C++代码中的一行,我需要建议以正确的方式在SQLite中实现这一点.
谢谢.
And*_*ius 13
我自己也经历过这个.只需在使用更改New
后删除单词即可.我相信有一个更好的解决方案,但它的工作原理.UPDATE Price
New.something
Price.something
使用评论中的代码段更新...
UPDATE Price
SET
price = (SELECT old.price FROM Price Old WHERE Old.date = 1 AND price.productId = Old.productId)
WHERE price.date = 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6019 次 |
最近记录: |