test 1:
update tb_chapters t set t.order_id = (SELECT COUNT(*) AS c FROM tb_chapters t2 WHERE t.bid = t2.bid AND t.id > t2.id)
error:
1093 - You can't specify target table 't' for update in FROM clause
test 2:
update tb_chapters t set t.order_id = (SELECT t2.c FROM (SELECT COUNT(t1.id) AS c FROM tb_chapters t1 WHERE t1.bid = t.bid AND t1.id < t.id) AS t2)
error:
1054 - Unknown column 't.bid' in 'where clause'
test 3:
update tb_chapters AS t JOIN (SELECT id, COUNT(id) AS c FROM tb_chapters t1 WHERE t1.bid = t.bid AND t1.id < t.id) AS t2 USING(id) set t.order_id = t2.c
error:
1054 - Unknown column 't.bid' in 'where clause'