【问题标题】:get certain amount of records of multiple values获取一定数量的多个值的记录
【发布时间】:2018-02-28 17:37:18
【问题描述】:

我有一张这样的桌子:

_id,  name,  type
1     A_0    a
2     A_1    a
3     A_2    a
4     A_3    a
5     B_0    b
6     B_1    b
7     B_2    b
8     B_3    b

我想获得一个搜索结果,其中每种类型恰好有 2 行。

更新:

我的结果应该是这样的: (会有更多种类)

_id,  name,  type
1     A_0    a
2     A_1    a
5     B_0    b
6     B_1    b

是否有人碰巧对此有解决方案?

【问题讨论】:

  • 请发布样本数据所需的结果。
  • 什么标准决定了你想要哪两个?
  • 每种类型的前 2 个结果会很好。

标签: sqlite limit-per-group


【解决方案1】:

对于每种类型,获取按 _id 排序的 2 行,然后在外部查询中提取具有这些 id 的行:

SELECT * FROM TheTable AS X WHERE _id IN 
(
      SELECT Y._id FROM TheTable AS Y
      WHERE X.type = Y.type
      ORDER BY Y._id ASC
      LIMIT 2
) ORDER BY _id;

【讨论】:

  • 这似乎需要几个小时......仍在加载 10 分钟后。我有一个包含 200k+ 条目的数据库。
  • _id 上有索引吗? - 这里有不同的 JOIN 方法:dba.stackexchange.com/questions/119900/…
  • 是的,有。你能在这里为这个例子写一些代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2020-10-09
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多