gpt4 book ai didi

UPDATE 语句中表名的 SQLite 别名

转载 作者:IT王子 更新时间:2023-10-29 06:21:35 24 4
gpt4 key购买 nike

我有一个名为 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 中都能按预期工作。如果新表和旧表差异太大,第一个语句可能会起作用,但我需要它们在同一个表中。

我真的不想写一个 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

关于UPDATE 语句中表名的 SQLite 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com