当前位置: 首页 > 面试题库 >

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

史景铄
2023-03-14
问题内容

我是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

问题答案:

通常,您可以在语句中使用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
)


 类似资料:
  • 我最近在我的数据库中添加了一个新的迁移,它以最简单的形式执行如下操作 根据SE上的回答,Laravel应该自动为我创建并更新last_record列,但我正在MySQL 5.7中对此进行测试。这对我来说绝对不是。我使用的是Laravel7.5,我的PHP版本是7.3。21 同时,手动将更新当前时间戳时的添加到我的数据库也失败了。所以,这似乎是我的MySQL数据库而不是Laravel本身的问题。因此

  • 问题内容: 我有一个带有14个条目的表’Labs’。 查询返回“ 14”。 但是查询返回“ 0”(不像我期望的那样为13)。实际上,当我设置LIMIT行偏移值2、3、4等时,仍然返回“ 0”。 为什么是这样?有没有一种方法可以仅使用mysql确定指定偏移量后的行数? FWIW我正在使用MySQL 5.5.9和InnoDB数据库引擎。 问题答案: 在执行计数后将应用限制。 尝试以下方法: 请注意,在

  • 我正在尝试做一个更新查询,它将对5个用户的按购买日期排序求和。 表为: 这是我的表 更新查询应该以这样的方式工作,它将添加一个设置的数量到5个用户谁已经有了订阅在先。因此更新后的输出应该如下所示 因此,如您所见,这20只添加到那些首先订阅的ID中。 到目前为止我所尝试的是: 我一直得到以下错误。 的用法不正确 请协助。

  • 问题内容: 我正在尝试将AngularJS用于我的第一个项目(锦标赛经理),并且筛选器不起作用:(我已阅读了有关该文档的所有文档,但无济于事:/ 所以,我在上面定义了vars : 现在,在我看来,我正在尝试重新排序(首先只有一个订单项),但是再也无法工作… 第二次,我要重新排序,从2条信息:和如果第一是平等的。我尝试更换这样的,但如果一个代码没有工作,他绝不会与2工作… 谢谢大家的阅读,对于帖子的

  • 问题内容: 我有这个代码。 http://jsfiddle.net/0tgL7u6e/ JavaScript 视图 我不知道为什么订单不起作用,为什么过滤器不起作用。 在另一个问题上,我读到一些关于对象无法过滤或排序的信息。但是我上面有一个对象数组。此外,它应该工作! 有什么问题? 问题答案: 要对过滤器使用跟踪,必须在过滤器后面添加按表达式跟踪。 这是工作

  • 问题内容: 在下面的查询中: 我们将从输出中得到多少结果,以及从哪里到哪里? 问题答案: 从记录#9开始到记录#26结束,它将返回18个结果。 首先从读取查询。首先,您要偏移8,这意味着您跳过了查询的前8个结果。然后限制为18。这意味着您考虑记录9、10、11、12、13、14、15、16 .... 24、25、26,它们总共为18条记录。 检查这个出来。 还有官方文件。