对于嵌套页面布局,我需要通过表中具有以下结构的表单提交行重新排序
列:(表名为:sourcedocs3)

sort1 | sort2 | type

1 | 1 | parent

1 | 2 | child

2 | 1 | no nesting

3 | 1 | parent

3 | 2 | child

3 | 3 | child

4 | 1 | no nesting

我需要能够在不丢失基本结构的情况下(通过PHP/Mysql)将3重新排序为1——3变为1,所有值为1的行都将递增。听起来很简单,但我很难在洗牌后保持结构完整(3 | 1应该是1 | 1,3 | 2应该是1 | 2等等)

最佳答案

START TRANSACTION;

UPDATE `why_do_people_never_give_the_table_name` SET sort1 = 999
WHERE sort1 = 3;

UPDATE `why_do_people_never_give_the_table_name` SET sort1 = sort1 + 1
WHERE sort1 BETWEEN 1 AND 3
ORDER BY sort1 DESC;

UPDATE `why_do_people_never_give_the_table_name` SET sort1 = 1
WHERE sort1 = 999;

COMMIT;

请注意,如果要将菜单移动到稍后的位置,例如移动2到4,则需要按升序排列第二次更新。

关于php - 使用php对父/子行mysql重新排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8406459/

10-09 08:51