2013-09-20 3 views
1

У меня есть приложение, в котором я не могу изменить способ сортировки вывода. Он хочет использовать столбец «sortorder», несмотря ни на что.mySQL - автопопуляция столбца сортировки на основе альфа другого столбца

У меня также есть большой стол, где сортировки все в настоящее время равны нулю. Я хочу заполнить эти поля автоматически, исходя из алфавитного порядка столбца «itemname».

таблица выглядит так:

id  itemname  sortorder 
1  A item   0 
2  Big item  0 
3  Cool item  0 
4  Bad item  0 

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

id  itemname  sortorder 
1  A item   10 
2  Big item  30 
3  Cool item  40 
4  Bad item  20 

Какой самый лучший подход, чтобы сделать это?

+0

Что вы используете, чтобы рассмотреть общий предмет, большой предмет, прохладный предмет и плохой предмет? Вы используете именно эти имена? – Minoru

+0

Лукас, нет :) Я просто составлял тестовые данные. Полагаю, что это смешно. (Не очень успешно.) –

+0

Но вы будете заполнять 'sortorder' на основе каждого' itemname' или у вас есть условия для его создания? – Minoru

ответ

1
UPDATE TableName a 
     INNER JOIN 
     (
     SELECT A.id, 
       A.itemName, 
       @sort := @sort + 10 so 
     FROM TableName a, 
       (SELECT @sort:=0) b 
     ORDER BY itemName, id 
     ) b ON a.id = b.ID 
SET a.sortorder = b.so 
+0

Fiddle, кажется, не работает –

+0

Если бы в нижнем регистре были буквы «A» и «ID», но это сработало! Благодаря :) –

Смежные вопросы