小编典典

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

mysql

我是MYSQL的新手,无法解决甚至在该论坛上回答太多,也无法识别此语句中的错误。我正在使用MYSQL数据库。

我有2个表:Ratemaster和Rates,客户可以在其中拥有1个具有不同费率的产品。因此,有一个重复的客户和产品字段,只有费率字段更改。现在,Table
Ratemaster具有所有字段:id,客户代码,产品,费率,用户,而Table
Rate仅具有:id,客户代码,费率,用户。-用户字段用于检查session_user。

现在,表Ratemaster具有3条记录,所有字段的值都相同,但Rate字段为空。桌费有不同的费率。我想从Rates表中的Ratemaster中更新所有价格。我无法使用mysql
UPDATELIMITmysql命令执行此操作,它给出以下错误:

错误使用UPDATE和LIMIT

UPDATE Ratemaster, Rates 
SET Ratemaster.Rate=Rates.Rate 
WHERE Ratemaster.user=Rates.user 
LIMIT 1

阅读 535

收藏
2020-05-17

共1个答案

小编典典

通常,您可以在语句中使用LIMIT和,但在您的情况下则不能使用,如MySQL文档12.2.10中所述。UPDATE语法ORDER``UPDATE

对于多表语法,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
)
2020-05-17