返回id和位置的SQLite SELECT

时间:2010-09-04 16:36:39

标签: sql sqlite

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

这甚至可能吗?

表格

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

[fk_id,idx]是唯一的。

查询:

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

结果:

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

<??> 是我寻求的“订单”/“位置”/“索引”信息。

2 个答案:

答案 0 :(得分:2)

SQLite没有分析支持 - 您最接近的是使用子选择:

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值,它们都会获得相同的位置值。使用此方法获取不同值的唯一方法是添加标准,以便逻辑区分哪些副本首先出现。

答案 1 :(得分:1)

您可以从隐藏的ROWID column获取信息,但这可能是不连续的(如果这很重要)。