ввести дополнительный столбец order
и сделать сортировку по двум столбцам
create table test (
(...)
meta_key varchar(255),
`order` integer default 1000,
key (`order`, `meta_key`) -- optional, more disk space usage, faster sorting
)
-- then do
select * from `test` order by `order`, `meta_key`
вам, конечно, придется поддерживать значение столбца заказа вручную (т. Е. Для «исключений» задайте большее или меньшее значение, чем по умолчанию), это будетКроме того, вам потребуется некоторое пространство для индекса двух столбцов
, или лучшим решением будет сортировка данных в другом месте, кроме базы данных (вы запрашиваете их из какого-либо сценария, не так ли?).
или представляетенекоторые, если - кошмар, как это предлагается в других ответах, - но это сделает ваши индексы бесполезными, поэтому это будет кошмар производительности для больших таблиц.