У меня есть таблица с колонкой, чтобы поддерживать состояние записи. т.е.
-----------------------------
| id | desc | state |
-----------------------------
| 1 | desc 1 | Complete |
| 2 | desc 2 | Open |
| ... | ... | ... |
-----------------------------
Я хочу получить записи в порядке "Открыть", затем "Завершить". Могу ли я сделать это с помощью одного SQL-запроса? Если так, как я должен написать это?
Попробуйте что-то вроде этого:
select *
from table_name
order by decode (state, 'Open', 1, 'Complete', 2, 3)
decode()
? Пожалуйста, оставьте ссылку.
decode
не доступно в MySQL
Да, вы можете сделать это с помощью оператора ORDER BY и функции FIELD:
SELECT * FROM table1 ORDER BY FIELD(state, 'Open', 'Complete')
state
является «Открыто», ни «Завершено», FIELD(..)
вернет 0
и отсортирует строку первым.