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)