返回重复的条目

时间:2016-02-12 12:48:27

标签: javascript sqlite

我有一个带有_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。

我怎么可能解决这个问题?

1 个答案:

答案 0 :(得分:1)

SELECT查询返回与WHERE子句中的过滤器匹配的任何行。 IN集中的冗余ID不会改变单个行与该过滤器匹配的事实。

如果您确实需要重复行,则必须为每个行编写单独的查询:

SELECT name FROM MyTable WHERE ID = 7
UNION ALL
SELECT name FROM MyTable WHERE ID = 8
UNION ALL
SELECT name FROM MyTable WHERE ID = 8
UNION ALL
SELECT name FROM MyTable WHERE ID = 7
UNION ALL
SELECT name FROM MyTable WHERE ID = 1;