使用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
<??>
是我寻求的“订单”/“位置”/“索引”信息。
答案 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获取信息,但这可能是不连续的(如果这很重要)。