Вопрос

У меня есть массив PHP с номерами идентификаторов в нем. Эти цифры уже заказаны.

Теперь я хотел бы получить свой результат с помощью метода in (), чтобы получить все идентификаторы.

Тем не менее, эти идентификаторы должны быть заказаны, как в методе.

Например:

IN(4,7,3,8,9)  

Должен дать результат как:

4 - Article 4  
7 - Article 7  
3 - Article 3  
8 - Article 8  
9 - Article 9

Какие-либо предложения? Может быть, есть функция для этого?

Спасибо!

Это было полезно?

Решение

Я думаю, вы можете искать функцию ПОЛЕ - Несмотря на то, что обычно рассматривается как строковая функция, она отлично работает и для чисел!

ORDER BY FIELD(field_name, 3,2,5,7,8,1)

Другие советы

Вы могли бы использовать FIELD():

ORDER BY FIELD(id, 3,2,5,7,8,1)

Возвращает индекс (положение) Str в списке Str1, Str2, Str3, ... Возвращает 0, если STR не найден.

Это своего рода уродливый хак, поэтому на самом деле используйте его, только если у вас нет другого выбора. Сортировка вывода в вашем приложении может быть лучше.

Стандартный SQL не дает этого способа сделать это (MySQL может, но я предпочитаю решения, которые являются нейтральными поставщиком, чтобы я мог переключать СУБД в любое время).

Это то, что вы должны сделать в пост-обработке после Набор результатов возвращается. SQL может вернуть их только в заказе, указанном в пункте «Порядок» (или в Любые Заказ, если такого пункта нет).

Другая возможность (хотя мне это не нравится, я с честью дать вам выбор)-это совершить несколько поездок в базу данных, по одному для каждого идентификатора и обрабатывать их по мере их появления:

select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.

Вам просто нужно отдать правильный заказ по заявлению.

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

Зачем вам заказать свои данные, как в вашем примере, заказано?

Если вы не возражаете против сознания длинных запросов, попробуйте так:

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top