繁体   English   中英

如何加入一对多表?

[英]How to join one-to-many tables?

我在SQLite中有一个类似下面的场景:一些其价格在一段时间内存储在价格表中的项目。 当前一件商品的价格是:

  1. 其Price.fkItemID == Item.id
  2. 这是最新的匹配项(在符合条件1的匹配项中具有最大ID)

那么,如何在SQLite中的表格下方联接,以便获得具有其当前价格的项目清单?

此外,如果有多个联接,是否会导致过多的性能下降? 在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM