В SQL ваш запрос может выглядеть так:
select id
from sometable
where id IN(1,1,2,1,1,1)
Что означает IN(1,1,2,1,1,1)
в SQL это:
select id
from sometable
where (id = 1 or id = 1 or id = 2 or id = 1 or id = 1 or id = 1)
Если в таблице есть только одна строка с идентификатором = 1, вы получите только эту возвращенную строку. Он НЕ умножается на количество раз, которое вы фильтруете для этой строки.
Обратите также внимание, что обычно (по соглашению) столбец id
является УНИКАЛЬНЫМ в таблице, поэтому, вероятно, есть только одна строка, где id = 1, и одна строка, где id = 2.
Кроме того, в таблицах SQL есть «неупорядоченные множества», просто нет никакой гарантии, что вы получите набор результатов в любом конкретном или предсказуемом порядке, пока вы не примените предложение order by
.
Короче говоря, вы ожидаете чего-то, чего SQL просто не делает.
Вы можете вставить свои значения массива в таблицу (или «производную таблицу») с одним значением на строку в этой таблице (т.е. 6 строк в вашем примере), ТО затем присоедините это к исходным данным, и ТО вы получите больше строк , например,
select tablex.id
from tablex
inner join (
select 1 as n, 0 as sortby union all
select 1 as n, 1 as sortby union all
select 2 as n, 2 as sortby union all
select 1 as n, 3 as sortby union all
select 1 as n, 4 as sortby union all
select 1 as n, 5 as sortby
) myarray on tablex.id = myarray.n
order by
myarray.sortby