使用order by和limit mysql更新多个不同的表

cdmah0mi  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(285)

对于初学者,我知道这是不可能的,我必须使用某种方式选择,但不知道如何做到这一点。这是我现在简化的查询。

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;
yshpjwxd

yshpjwxd1#

你不能使用 ORDER BY 在一个 UPDATE 用一个 JOIN 在mysql中。假设 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;

相关问题