使用ORDER BY和LIMIT更新不在MYSQL中工作

use*_*409 12 mysql limit

我是MYSQL的新手,无法在此论坛上解决甚至没有这么多答案,无法识别此声明中的错误.我正在使用MYSQL数据库.

我有2个表:Ratemaster和rate,其中一个客户可以拥有1个不同价格的产品.因此,客户和产品字段重复,只有费率字段发生变化.现在Table Ratemaster具有所有字段:id,客户代码,产品,费率,用户,而Table Rates仅具有:id,cust代码,Rate,user. - 用户字段用于检查session_user.

现在Table Ratemaster有3条记录,除了Rate字段为空外,所有字段值都相同.表费率有不同的费率.我想在费率表中从Ratemaster更新所有费率.我无法用UPDATELIMITmysql命令这样做,它给出错误:

UPDATE和LIMIT的使用不正确

UPDATE Ratemaster, Rates 
SET Ratemaster.Rate=Rates.Rate 
WHERE Ratemaster.user=Rates.user 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

Sas*_*ley 18

通常你可以在你的语句中使用LIMIT和,但在你的情况下不是,如MySQL文档12.2.10中所写.更新语法:ORDERUPDATE

对于多表语法,UPDATE更新table_references中指定的满足条件的每个表中的行.在这种情况下,不能使用ORDER BY和LIMIT.

请尝试以下方法:

UPDATE Ratemaster
SET Ratemaster.Rate =
(
    SELECT Rates.Rate
    FROM Rates
    WHERE Ratemaster.user = Rates.user
    ORDER BY Rates.id
    LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)


小智 7

Salam您可以使用此方法并正常工作!

UPDATE Ratemaster, Rates 
SET Ratemaster.Rate=Rates.Rate 
WHERE Ratemaster.user=Rates.user 
ORDER BY Rates.id
LIMIT 1
Run Code Online (Sandbox Code Playgroud)