mysql - 使用 ORDER BY 和 LIMIT MYSQL 更新多个不同的表

标签 mysql sql-update sql-order-by limit

对于初学者来说,我知道这是不可能的,我必须以某种方式使用 select,但不知道该怎么做。这是我现在简化的查询。

UPDATE table1 AS tb1 
LEFT JOIN table2 AS tb2 ON (tb1.id = tb2.id AND tb1.column1 = tb2.column1)
SET
tb1.columX = (@position_temp := @position_temp+1),
tb1.columY = 2,
tb1.columZ = 3,
tb2.columA = 0
WHERE tb1.id = X AND tb1.columnB = 10
ORDER BY tb1.columX DESC
LIMIT 10;

最佳答案

您不能在 MySQL 中将 UPDATEJOIN 一起使用 ORDER BY。假设table1(id)和table2(id,column1)是唯一的,这应该有效:

UPDATE table1 t1 JOIN
       (SELECT tt1.*, tt2.column1
        FROM table1 tt1 LEFT JOIN
             table2 tt2
             ON tt1.id = tt2.id AND tt1.column1 = tt2.column1
        WHERE tt1.id = X AND tt1.columnB = 10
        ORDER BY tt1.columX DESC
        LIMIT 10
       ) tt1
       ON tt1.id = t1.id LEFT JOIN
       table2 t2
       ON t2.id = tt1.id AND t2.column1 = tt1.column1
    SET t1.columX = (@position_temp := @position_temp + 1),
        t1.columY = 2,
        t1.columZ = 3,
        t2.columA = 0;

关于mysql - 使用 ORDER BY 和 LIMIT MYSQL 更新多个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50898234/

相关文章:

MySQL:匹配在两个日期之间有 x 个连续日期可用的记录

mysql - 如果重复插入则更新? w 在 INSERT 上自动增加 P​​K?

javascript - DELETE 后计算行顺序

mysql - 更改 Mysql 列值

mysql - 带有 AUTO_INCREMENT 列的 MySQL 表中简单 SELECT 的默认顺序是什么

mysql - 通过 SELECT 查询将 Alias 与 JSON_EXTRACT 结合使用

mysql - 使用 mysql select 查询时,我需要将列值获取为是/否,而不是获取 0/1

mysql - 此 MYSQL 查询需要正确的格式

mysql - Laravel 中的 OrderByRaw() 然后 orderBy()

sql - 在 ORDER BY 中使用 CASE 将一些记录推到最后