我有一个表_id,名称。我使用SQLite3查询来获取给定id的名称,如下面的api。返回重复项
getName(id) >> Query "select name from table where _id=id"
和ID数组这个其他方便的API,返回的行(名称)必须申请ID的顺序相匹配。
getNames(ids) >>
/* Returned text must be ordered */
var ordClause='ORDER BY CASE _id';
for(var i=1;i<=ids.length;i++){ ordClause += ' WHEN '+ids[i-1]+' THEN '+i; }
ordClause += ' END';
Query "select name from table where _id in("+ids+") "+ordClause
当给定的ids
有重复值时,会出现问题。冗余ID仅映射到第一个ID。因此返回的行可能少于请求的ID。
我该如何解决这个问题?
重复的ID是只是恼人。使用大型数据库时,需要很多时间才能执行,但我会将所有数据转储到具有新的唯一ID字段的新表结构中,并将old_ids保留为临时引用。我不确定这是否是一个好主意... – SebasSBM
如果数据量太大,我的方法可能是最糟糕的...... – SebasSBM
其实这个解决方案的数据太大了,冗余情况是非常罕见,极少数API调用在角落用例中有冗余ID。我应该巧妙地找到这个特殊情况的解决方案。 –