今天早上我的大脑决定停止工作。我需要一个 MySQL 和 SQLite 兼容的查询,它允许我根据另一列的排序批量更新表的“display_order”列。
例如,假设我有以下字段:display_order、first_name、last_name、date_created。我想说“按 last_name 排序并将 display_order 更新为顺序”。
仅供引用,数据库比那些字段复杂得多,而且事情的设计非常糟糕,以至于复杂的即时排序需要几十年的时间。也就是说,我们需要提前获取给定报告、交易等的数据,以便直接“SELECT * FROM tbl ORDER BY display_order”起作用。
最好的。
最佳答案
下面是我想用表格标题的种类更新序列列时所做的。 (通常排序顺序由系列中的真实位置确定,但是一组“holder”杂项一次性演讲需要按标题排序,并且每次添加新演讲时都必须更新)。
UPDATE resource r
JOIN(
SELECT
resource.resource_key AS rkey,
@curRow := @curRow + 1 AS row_number
FROM
resource,
(SELECT @curRow := 0) rtemp
WHERE
grouping_key = 'MMMISC'
ORDER BY
resource.title
) c ON r.resource_key = c.rkey
SET r.group_sequence = c.row_number
附言我不知道它是否适用于 SQLite,但它适用于 MySQL...
关于mysql - 使用 SQL 根据结果排序操作中的位置批量更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6141894/