Есть ли способ в MySQL, чтобы выбрать порядок для начала и конца возвращаемых строк? - PullRequest
0 голосов
/ 10 августа 2010

Посмотрите на этот простой запрос

SELECT id FROM users

Теперь, скажем, я хотел, чтобы пользователи с id заказывали 4, 5, 7, 8, тогда мне плевать на middle , и, наконец, я хочу, чтобы последние были 55, 56, 58.

Таким образом, возвращаемые строки будут выглядеть примерно так (\ n новая строка)

4  // explicitly chose these as the start rows
5  // " "
7  // " "
8  // " "
44 // these just come in any order (order not important)
23 // " "
10 // " "
55 // explicitly chose these as the end rows
56 // " "
58 // " "

Как я могу изменить запрос выше, чтобы сделать это? Спасибо

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Использование:

  SELECT u.id
    FROM USERS u
ORDER BY CASE id
           WHEN 4 THEN 1
           WHEN 5 THEN 2
           WHEN 7 THEN 3
           WHEN 8 THEN 4
           WHEN 55 THEN 100000
           WHEN 56 THEN 100001
           WHEN 58 THEN 100002
           ELSE id
         END ASC

Установить значения далеко за пределами фактических значений, чтобы получить 55/56/58 по порядку в конце.

0 голосов
/ 10 августа 2010

Лучше ввести поле заказа в вашей таблице, чем использовать хак или что-то жестко закодированное.

...