【发布时间】:2010-10-19 10:08:00
【问题描述】:
我有一张表,每行有 20 行,每行都有一个显示顺序的数字 (1-20)。
SELECT * FROM `mytable` ORDER BY `display_order` DESC;
您可以从管理区域拖动行或为每行手动输入一个新数字。
当然,为每一行循环一个 UPDATE 查询是不好的,在一个或很少的查询中,有什么替代方法适合更新 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;
【问题讨论】:
-
这是一个链表问题。可能意味着架构更改。