Как получить Result из базы данных по порядку, указанному в предложении «IN»? - PullRequest
2 голосов
/ 12 июля 2010

Извините за плохой английский.

bfproduct - таблица, а productid - первичный ключ в этой таблице, а productname - другое поле, определенное в этой таблице.

Когда я выполняю этот запрос, select * from bfproduct where productid in (23,5,54,3132,32). Результат выглядит следующим образом:

 

productid | productname

5         15 Park Avenue
23        Good Boy Bad Boy
32        dsf sf gfdsf dsf d  
54       dsdsfsa ffs ff sfsf 
3132        Just Books - On The Failure of Legal System

Есть ли способ получить результат в порядке, указанном в пункте «IN», например:


productid | productname
23        Good Boy Bad Boy
5         15 Park Avenue
54       dsdsfsa ffs ff sfsf 
3132        Just Books - On The Failure of Legal System
32        dsf sf gfdsf dsf d  

Пожалуйста, помогите ...

Ответы [ 3 ]

9 голосов
/ 12 июля 2010

Вот один из способов сделать это:

SELECT *
FROM bfproduct
WHERE productid
IN (23,5,54,3132,32)
ORDER BY
   CASE productid
      WHEN   23 THEN 0
      WHEN    5 THEN 1
      WHEN   54 THEN 2
      WHEN 3132 THEN 3
      WHEN   32 THEN 4
   END
1 голос
/ 12 июля 2010

Первое, о чем я могу подумать, попробуйте что-то вроде ...

select  bfproduct.*
from    bfproduct INNER JOIN
(
    select 1 as sequence, 23 as productid
    union
    select 2,5
    union
    select 3,54
    union
    select 4,3132
    union
    select 5,32
) as lookup on bfproduct.productid=lookup.productid
order by lookup.sequence

(я не проверял это, так что, возможно, некоторые незначительные синтаксические ошибки!)

0 голосов
/ 12 июля 2010

Вы должны добавить предложение ORDER BY, в котором строки будут расположены в правильном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...