UPDATE语句中表名的SQLite别名

UPDATE语句中表名的SQLite别名,第1张

概述我有一个名为Price的SQLite表,如下所示: date, productId, price----------------------20120601, 10 , 10.120120601, 20 , 20.120120602, 10 , 020120602, 20 , 020120602, 30 , 0 该表是 我有一个名为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" DOUBLE,PRIMARY KEY ("date","productID"))

我想用上一个日期的同一产品的价格填写日期== 20120602的价格.

我希望桌子变成这样:

date,10.120120602,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.PriceFROM Price New,Price oldWHRER ......

sqlite在FROM附近给了我一个错误.

我仔细检查了sqlite的sql语法,但没有发现幸运.即使我从未尝试过,我认为这两个语句在MS sql Server中都可以正常工作.如果New和old的表太不同,第一个语句可能会起作用,但我需要在同一个表中.

我真的不想写一个for循环来更新我的C代码中的一行,我需要在sqlite中以正确的方式实现这一点的建议.

谢谢.

我自己也经历过这个.只需在UPDATE Price之后删除单词New以及使用New.something更改为Price.something的任何位置.我相信有一个更好的解决方案,但它的工作原理.

使用评论中的代码段更新…

UPDATE Price SETprice = (SELECT old.price FROM Price old WHERE old.date = 1 AND price.productID = old.productID) WHERE price.date = 2
总结

以上是内存溢出为你收集整理的UPDATE语句中表名的SQLite别名全部内容,希望文章能够帮你解决UPDATE语句中表名的SQLite别名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/1160465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存