我是MYSQL的新手,无法在此论坛上解决甚至没有这么多答案,无法识别此声明中的错误.我正在使用MYSQL数据库.
我有2个表:Ratemaster和rate,其中一个客户可以拥有1个不同价格的产品.因此,客户和产品字段重复,只有费率字段发生变化.现在Table Ratemaster具有所有字段:id,客户代码,产品,费率,用户,而Table Rates仅具有:id,cust代码,Rate,user. - 用户字段用于检查session_user.
现在Table Ratemaster有3条记录,除了Rate字段为空外,所有字段值都相同.表费率有不同的费率.我想在费率表中从Ratemaster更新所有费率.我无法用UPDATE和LIMITmysql命令这样做,它给出错误:
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)
| 归档时间: |
|
| 查看次数: |
40593 次 |
| 最近记录: |