在一个或极少数查询中更新多个 MySQL 行的显示顺序
我有一个表格,每行20行,每行都有一个数字用于显示顺序(1-20)。
SELECT * FROM `mytable` ORDER BY `display_order` DESC;
从管理区域中,您可以拖动行或为每行手动键入新数字。
当然,为每行循环更新查询是不好的,在一个或极少数的查询中,适合更新20行甚至更多(50-200 +)中的一个单元格,有什么替代方案?
编辑:很多好的回应和想法。我可能会扩展到目前为止我考虑过的想法:
一个数组字符串:我可以将顺序放在一个字符串中,以我想要的顺序列出唯一行ID - 例如行1,9,2,6,23。更新订单后,隐藏字段将使用 JavaScript 进行更新,并在完成后将其添加到数据库或文本文件中:
UPDATE `my_dispaly_order_table` SET `display_order`='1,9,2,6,23';
单独更新每一行:这是我试图避免的,但它只会非常不频繁地更改,因此每周或每月一次一次点击20-30个调用可能不是问题,因此只需在每行上调用UPDATE就是我通常做的事情:
UPDATE `mytable` SET `display_order`='1' WHERE `rowId` = 1;
UPDATE `mytable` SET `display_order`='2' WHERE `rowId` = 9;
UPDATE `mytable` SET `display_order`='3' WHERE `rowId` = 2;
UPDATE `mytable` SET `display_order`='4' WHERE `rowId` = 6;
UPDATE `mytable` SET `display_order`='5' WHERE `rowId` = 23;