Порядок SQL списком строк?

Я недавно пользовался двумя универсальными библиотеками со своей работой.NET - у них обоих есть много различных charttypes, которые включают изменение масштаба и прокрутку, которая Вы после: каждый свободен ( ZedGraph) другой, не ( Dundas).

я счастливо рекомендовал бы им обоим. Dundas лучше - но это не дешево. Название буквы Z является открытым исходным кодом, так может быть довольно информативным, чтобы просто считать код.

25
задан Taryn 4 November 2014 в 15:30
поделиться

7 ответов

Попробуйте использовать это:

select * from table 
order by FIELD(Code, 'Health', 'Phone', 'Freeze', 'Hot')
49
ответ дан 28 November 2019 в 17:48
поделиться

Привет, это запрос SQL Server, но я уверен, что вы можете сделать это и в MySQL:

SELECT ID,  Code
FROM x
ORDER BY 
     CASE Code WHEN 'Health' THEN 1
               WHEN 'Phone' THEN 2
               WHEN 'Freeze' THEN 4
               WHEN 'Hot' THEN 5
     ELSE 6 END ASC
     , Code ASC
3
ответ дан 28 November 2019 в 17:48
поделиться

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

Пример вашей таблицы ключевых слов выглядит следующим образом:

ID  Code     Sequence
1   Health   1 
2   Freeze   3
3   Phone    2
4   Hot      4

Затем вы можете присоединиться.

SELECT *
FROM   MyTable INNER JOIN
          Keywords ON Keywords.ID = MyTable.KeywordID
ORDER BY Keywords.Sequence

Надеюсь, это дает вам идею.

12
ответ дан 28 November 2019 в 17:48
поделиться

Вот ужасный взлом:

select * from table
order by (
     case Code 
     when 'Health' then 0 
     when 'Phone' then 1
     when 'Freeze' then 2
     when 'Hot' then 3
     end
)
12
ответ дан 28 November 2019 в 17:48
поделиться

Это всего лишь одноразовый ORDER BY или что-то, что вы захотите делать часто и с большим количеством значений, чем указано здесь?

Указанный вами порядок является произвольным, поэтому для достижения желаемого необходимо указать идентификатор

SELECT 
    ID,
    Code,
    CASE Code
        WHEN 'Health' THEN 1
        WHEN 'Phone' THEN 2
        WHEN 'Freeze' THEN 3
        WHEN 'Hot' THEN 4
    END As OrderBy
FROM Table
ORDER BY 
    OrderBy

или

SELECT 
    ID,
    Code
FROM Table
ORDER BY 
    CASE Code
        WHEN 'Health' THEN 1
        WHEN 'Phone' THEN 2
        WHEN 'Freeze' THEN 3
        WHEN 'Hot' THEN 4
    END

(я не знаком с MySQL, но приведенное выше будет работать в SQL Server. Синтаксис для MySQL не будет слишком отличаться)

Если вы, вероятно, захотите делать это часто, то создайте столбец OrderBy в таблице или создайте таблицу OrderBy со ссылкой FK на эту таблицу и укажите числовое поле OrderBy в этом.

3
ответ дан 28 November 2019 в 17:48
поделиться

Параметры пары:

  1. Добавить столбец OrderCode с числовым желаемый порядок

  2. Добавить таблицу с FK к этому идентификатору таблицы и OrderCode

3
ответ дан 28 November 2019 в 17:48
поделиться

Да, присоедините результаты к вашей кодовой таблице , а затем упорядочите по коду.CodeOrder

РЕДАКТИРОВАТЬ: Объясняя использование кодовой таблицы ...

Создайте отдельную таблицу кодов (CodeId, Code, CodeOrder), присоединитесь к ней и упорядочите по CodeOrder. Это лучше, чем предлагать хакерский прием (case ...), поскольку вы можете легко изменить коды и заказы.

1
ответ дан 28 November 2019 в 17:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: