У меня есть таблица с именем _id. Я использую SQLite3-запросы для получения имен с указанным идентификатором, например, следующим api.Возврат повторяющихся записей
getName(id) >> Query "select name from table where _id=id"
и этот другой удобный API для массива идентификаторов, возвращаемые строки (имена) должны соответствовать порядку запрашиваемых идентификаторов.
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
имеют повторяющиеся значения. Резервные идентификаторы сопоставляются только с первым идентификатором. Таким образом, возвращаемые строки могут быть меньше запрошенных идентификаторов.
Как я могу решить эту проблему?
Повторяющиеся идентификаторы просто раздражает. С большой БД для выполнения потребуется много времени, но я бы сбросил все данные в новую структуру таблицы с новым уникальным полем идентификатора и сохранил old_ids в качестве предварительной ссылки. Я не уверен, что это хорошая идея в вашем случае ... – SebasSBM
Мой подход может быть худшим, если объем данных слишком массивный ... – SebasSBM
Фактически данные слишком велики для этого решения, и избыточная ситуация очень редко, очень мало вызовов API имеют избыточные идентификаторы в случаях использования в углах. Я должен найти решение для этого особого случая. –