MySQL Query для заказа по двум полям - PullRequest
1 голос
/ 27 ноября 2011

У меня есть таблица MySQL со следующими полями:

id, morning, evening, event, other-fields

В течение примерно одной недели каждый день какое-то событие будет происходить утром или вечером.Таким образом, события записываются в таблицу с «номером дня», сохраненным в поле «утро» или «вечер» (если событие должно происходить утром, то поле «утро» содержит «число день», а поле «вечер» содержит 0и наоборот).Эти записи делаются не по порядку или по дням, а по собственному желанию пользователя.

Мне нужно извлекать эти записи в правильном порядке, т.е. сортировать записи по дням в порядке возрастания и записи по дням.сортировать по сеансам (т. е. утром, а затем вечером).

Пожалуйста, помогите с идеей упорядочить данные в этих двух полях.

Ниже приведены некоторые примеры данных за три дня.:

id,     mor,       even,     otherstuff....
1         1          0
2         3          0
3         3          0
4         2          0
5         3          0
6         3          0
--------------------------
7         0          1
8         0          2
9         0          3
10        0          3
----------------------

Ниже приведены те же данные, приведенные выше, в формате, который мне нужен для их извлечения:

id,      mor,       even,     otherstuff....
1         1          0
2         0          1
--------------------------
3         2          0
4         0          2
------------------------
5         3          0
6         3          0
7         3          0
8         3          0
9         0          3
10        0          3

1 Ответ

2 голосов
/ 27 ноября 2011

Если один из них всегда равен нулю, номер дня будет равен mor + even, поэтому вы можете отсортировать по нему.

select *
from your_table
order by (mor + even), even;

Поскольку even = 0 для «дневных» записей, они будут появляться перед любыми «четными» записями в тот же номер дня.

...