代码之家  ›  专栏  ›  技术社区  ›  Arnaud Leymet

返回ID和位置的sqlite select

  •  3
  • Arnaud Leymet  · 技术社区  · 16 年前

    使用sqlite select语句,我希望能够获得每个结果的位置。

    这是可能的吗?

    表:

    fk_id   idx
    0       0
    0       1
    0       2
    1       0
    1       1
    1       3
    1       4
    2       0
    

    具有独特的[FK U ID,IDX]。

    查询:

    SELECT `idx`, <??> from `mytable` WHERE `fk_id`=1
    

    结果:

    idx   <??>
    0     0
    1     1
    3     2
    4     3
    

    这个 <??> 是我所寻找的“顺序”/“位置”/“索引”信息。

    2 回复  |  直到 16 年前
        1
  •  2
  •   OMG Ponies    16 年前

    sqlite没有分析支持-最接近的方法是使用子select:

    SELECT mt.idx,
           (SELECT COUNT(*) - 1
              FROM mytable t
             WHERE t.fk_id = mt.fk_id
               AND t.idx <= mt.idx) AS position
      FROM mytable mt
     WHERE mt.fk_id = 1
    

    这里的警告是如果你有副本 idx 值,它们都得到相同的位置值。使用此方法获取不同值的唯一方法是添加条件,以便逻辑能够区分哪些重复项位于第一位。

        2
  •  1
  •   Donal Fellows    16 年前

    你也许能从隐藏的 ROWID column 尽管这可能是不连续的(如果这很重要的话)。

    推荐文章