Сортировка по схеме заказного заказа в MySQL - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть много строк в таблице MySQL со ссылкой, представленной числом от 0 до 10000.

Я хочу отсортировать строки по этой ссылке в произвольном порядке, напримервот этот:

  1. Все строки со ссылкой между 2000 и 2999
  2. Затем все строки со ссылкой между 4000 и 4999
  3. Затем все строки со ссылкой между 3000 и 3999
  4. Затем все строки со ссылкой между 1000 и 1999

Этоможно сделать что-то подобное только с одним запросом MySQL?

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Вы можете использовать order by с case:

order by
case 
  when reference between 2000 and 2999 then 0
  when reference between 4000 and 4999 then 1
  when reference between 3000 and 3999 then 2
  when reference between 1000 and 1999 then 3
  else 4
end 

, вы можете дополнительно заказать и другие столбцы.

0 голосов
/ 04 февраля 2019

Вы можете попробовать ниже - используя определение пользовательского заказа по выражению CASE WHEN

select * from tablename
order by 
case when reference>=2000 and reference<=2999 then 1
     when reference>=4000 and reference<=4999 then 2
     when reference>=3000 and reference<=3999 then 3
     when reference>=1000 and reference<=1999 then 4 end
0 голосов
/ 04 февраля 2019

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

SELECT t.*
FROM mytable t
ORDER BY
    CASE 
        WHEN t.num BETWEEN 2000 AND 2999 THEN 1
        WHEN t.num BETWEEN 4000 AND 4999 THEN 2
        WHEN t.num BETWEEN 3000 AND 3999 THEN 3
        WHEN t.num BETWEEN 1000 AND 1999 THEN 4
    END,
    t.num
...