2016-06-16 4 views
0

Я хочу изменить порядок отображения столбца отображения, чтобы порядок был последовательным без пробелов. Возможна следующая ситуация:Как обновить запрос mysql с подсчетом строк

UPDATE foo 
INNER JOIN bar ON foo.barid = bar.id 
SET foo.display = !rowcount! 
WHERE bar.baz = 1 
ORDER BY foo.display; 
+0

Зачем стоит копилка? Вы должны обновлять его каждый раз, когда данные в таблице изменяются. Выберите последовательность на лету –

+0

@juergen d Делает вставки при редактировании последовательности проще. – SystemicPlural

ответ

1

Вы хотите этого?

UPDATE foo 
INNER JOIN (
    SELECT t2.id, @rowNo := @rowNo + 1 AS rowcount 
    FROM foo t1 
    INNER JOIN bar t2 ON t1.barid = t2.id 
    INNER JOIN (SELECT @rowNo := 0) t 
    WHERE t2.baz = 1 
    ORDER BY t1.display) bar ON foo.barid = bar.id 
SET foo.display = bar.rowcount 
Смежные вопросы