mysql - 使用 SQL 根据结果排序操作中的位置批量更新列?

标签 mysql sqlite sorting batch-updates

今天早上我的大脑决定停止工作。我需要一个 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

this 致敬和 this启发答案...

附言我不知道它是否适用于 SQLite,但它适用于 MySQL...

关于mysql - 使用 SQL 根据结果排序操作中的位置批量更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6141894/

相关文章:

mysql - 获取特定年月内的记录

mysql - 如何处理数据以避免 MySQL "incorrect string value"错误?

Swift 4 - 核心数据为 UIPickerView 获取不同的值

android - 添加外键时 Sqlite 查询中的语法错误

sorting - Cakephp 3.3 按多列排序分页结果

PHP - 排序字母数字键的更有效方法

MySql 连接三个表

mysql - 使用不同的日期格式将 CSV 导入 MySQL

java - 无法使用简单适配器查看数据 Sqlite

对 Crystal Reports 中的交叉表列进行排序