如何加入 one-to-many 个表?

How to join one-to-many tables?

我在 SQLite 中有如下场景: 一些商品的价格存储在 price table 中。一件商品的当前价格是:

  1. 它Price.fkItemID == Item.id
  2. 这是最近的匹配项(在符合条件 1 的那些人中 ID 最大)

那么我如何在 SQLite 中加入下面的 tables 以便我得到一个包含当前价格的项目列表?

另外,有多个join,会不会导致性能下降太多?

要获取具有最大 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列。)