我在SQLite中有类似下面的场景: 一些物品,其价格在时间内存储在价格表中。项目的当前价格是:
那么如何在SQLite中加入以下表格,以便获得一个包含当前价格的项目列表?
此外,有多个连接,是否会导致性能下降?
答案 0 :(得分:1)
要获取具有最大ID的行,请使用按ID排序的相关子查询,并仅获取第一个返回的行:
SELECT name,
(SELECT price
FROM Table2
WHERE fkItemID = Table1.id
ORDER BY id DESC
LIMIT 1
) AS current_price
FROM Table1
如果有一个索引允许在fkItemID
上进行搜索,然后在id
上进行排序,则此查询会很有效:
CREATE INDEX Table2_fkItemID_id ON Table2(fkItemID, id);
(如果历史价格不多,则无需为id
列编制索引。)