如何使用join,update和order by编写查询?

use*_*951 8 mysql sql join sql-order-by sql-update

我有2个表:tblRider和tbl_SCORE.tblRider拥有关于所有车手(竞争对手)的所有信息,并且在tbl_SCORE中保存了所有车手的得分.我想在tblRider中更新一列HalfPipeFinal.标准此列设置为0,但我想将其设置为1,以获得20个最佳分数的车手.(所以只有20名最佳车手可以参加决赛,而那些参赛选手中有1名参赛者是HalfPipeRider)

这是我的查询:

UPDATE tblRider
JOIN tbl_SCORE ON tblRider.riderID = tbl_SCORE.riderID
SET tblRider.HalfPipeFinal = 1
WHERE `gameID` =35
ORDER BY `score` DESC
limit 20;**
Run Code Online (Sandbox Code Playgroud)

如果我运行此查询,我会收到此错误:"UPDATE和ORDER BY的使用不正确"所以我去看了,显然你不能在连接中使用update和order by.所以我正在寻找另一种方法来编写这个查询而没有订单,但是我找不到它.

所有帮助表示赞赏.谢谢

dav*_*mos 13

在SQL中,你不能拥有自己的ORDER BY一部分UPDATE.但你可以使过滤器成为子查询,给它一个别名并加入它...

UPDATE tblRider r
JOIN 
(
    SELECT riderID 
    FROM tbl_SCORE
    WHERE gameID = 35
    ORDER BY score DESC
    LIMIT 20 
) s
ON r.riderID = s.riderID
SET r.HalfPipeFinal = 1;
Run Code Online (Sandbox Code Playgroud)