Здравствуйте, MasterMind, Вы писали:
MM> В данном случае выборка будет 1,2,4,6. А нужно, чтобы было именно в очередности от сфинкса — "2,6,1,4". Каким образом это можно сделать?
Например, вставить их во временную таблицу вместе с весом, затем соединить с исходной.
Здравствуйте, MasterMind, Вы писали:
MM> Есть выборка id через запрос к сфинксу с весом. Необходимо сохранить очередность id при последующей выборке уже полных данных. К примеру: MM> В данном случае выборка будет 1,2,4,6. А нужно, чтобы было именно в очередности от сфинкса — "2,6,1,4". Каким образом это можно сделать?
Никак. Нужно получать полный набор данных и вывести в нужном порядке уже на клиентской стороне.
Здравствуйте, Tigor, Вы писали:
T>Здравствуйте, MasterMind, Вы писали:
T>Нету под руками MySql, так что не могу проверить. T>Там нельзя что-нить подобное написать?
T>
T>select
T> table.*
T>from
T> table
T>where
T> id in (2,6,1,4)
T>order by
T> case id
T> when 2 then 1
T> when 6 then 2
T> when 1 then 3
T> when 4 then 4
T> end
T>
Нет
Re[3]: (MySQL) сделать выборку по id в строгом порядке.
Здравствуйте, MasterMind, Вы писали:
MM>Здравствуйте, Tigor, Вы писали:
T>>Здравствуйте, MasterMind, Вы писали:
T>>Нету под руками MySql, так что не могу проверить. T>>Там нельзя что-нить подобное написать?
T>>
T>>select
T>> table.*
T>>from
T>> table
T>>where
T>> id in (2,6,1,4)
T>>order by
T>> case id
T>> when 2 then 1
T>> when 6 then 2
T>> when 1 then 3
T>> when 4 then 4
T>> end
T>>
MM>Нет
но можно же написать что-то вида:
select * from (
select (case when id = 2 then 1 when 6 then 2 ... end) as ord , table.*
from table
where id in (2,6...)
) as wrappedQ
order by wrappedQ.ord asc
Re: (MySQL) сделать выборку по id в строгом порядке.
Здравствуйте, MasterMind, Вы писали:
MM>В данном случае выборка будет 1,2,4,6. А нужно, чтобы было именно в очередности от сфинкса — "2,6,1,4". Каким образом это можно сделать?
select * from table where id in (2,6,1,4) order by find_in_set(id, '2,6,1,4')
... << RSDN@Home 1.2.0 alpha 5 rev. 67>>
Re[2]: (MySQL) сделать выборку по id в строгом порядке.
Здравствуйте, evilbloodydemon, Вы писали:
E>Здравствуйте, MasterMind, Вы писали:
MM>>В данном случае выборка будет 1,2,4,6. А нужно, чтобы было именно в очередности от сфинкса — "2,6,1,4". Каким образом это можно сделать?
E>
E>select * from table where id in (2,6,1,4) order by find_in_set(id, '2,6,1,4')
E>
Да, то что нужно, только у Вас там со строками, воспользовался просто field
Re[3]: (MySQL) сделать выборку по id в строгом порядке.
Здравствуйте, MasterMind, Вы писали:
MM>Здравствуйте, Tigor, Вы писали:
T>>Здравствуйте, MasterMind, Вы писали:
T>>Нету под руками MySql, так что не могу проверить. T>>Там нельзя что-нить подобное написать?
T>>
T>>select
T>> table.*
T>>from
T>> table
T>>where
T>> id in (2,6,1,4)
T>>order by
T>> case id
T>> when 2 then 1
T>> when 6 then 2
T>> when 1 then 3
T>> when 4 then 4
T>> end
T>>
MM>Нет
ДА!
В смысле -- можно так написать, и даже нужно.
Re[4]: (MySQL) сделать выборку по id в строгом порядке.
Здравствуйте, MasterZiv, Вы писали:
MZ>Здравствуйте, MasterMind, Вы писали:
MM>>Здравствуйте, Tigor, Вы писали:
T>>>Здравствуйте, MasterMind, Вы писали:
T>>>Нету под руками MySql, так что не могу проверить. T>>>Там нельзя что-нить подобное написать?
T>>>
T>>>select
T>>> table.*
T>>>from
T>>> table
T>>>where
T>>> id in (2,6,1,4)
T>>>order by
T>>> case id
T>>> when 2 then 1
T>>> when 6 then 2
T>>> when 1 then 3
T>>> when 4 then 4
T>>> end
T>>>
MM>>Нет
MZ>ДА! MZ>В смысле -- можно так написать, и даже нужно.
Да, я тогда просто не сразу понял что ордер бу принимает по сути своей функцию, а как она сделана — уже не важно. Минус в этом подходе для меня в том, что такой запрос генерировать сложней, чем просто создать последовательность методом (php) implode(',', $data );