UPDATE语句中表名的SQLite别名
发布时间:2020-12-12 19:08:52 所属栏目:百科 来源:网络整理
导读:我有一个名为Price的SQLite表,如下所示: date,productId,price----------------------20120601,10,10.120120601,20,20.120120602,020120602,30,0 该表是使用以下语句创建的: CREATE TABLE "Price" ("date" INTEGER NOT NULL,"productId" INTEGER NOT NULL,
我有一个名为Price的SQLite表,如下所示:
date,productId,price ---------------------- 20120601,10,10.1 20120601,20,20.1 20120602,0 20120602,30,0 该表是使用以下语句创建的: CREATE TABLE "Price" ("date" INTEGER NOT NULL,"productId" INTEGER NOT NULL,"price" DOUBLE,PRIMARY KEY ("date","productId")) 我想用上一个日期的同一产品的价格填写日期== 20120602的价格. 我希望桌子变成这样: date,10.1 20120602,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在dot附近给了我一个错误. 比我试过这句话: 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中以正确的方式实现这一点的建议. 谢谢. 我自己也经历过这个.只需在UPDATE Price之后删除单词New以及使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |