当前位置: 首页 > 知识库问答 >
问题:

使用不同表中的SELECT SUM更新MySQL

亢建白
2023-03-14

我有两个表格:项目,带有数量和单价(id | name | order | id | qt | unit | price)和表格订单

我想更新表格订单并放入订单。total_price相同订单的乘法qt*单价之和,以获得订单的总价。

items表上的SELECT查询非常简单,可以很好地为同一订单id内的所有项目求和:

SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id

但是我不能在我的ORDERS表中插入这个值。我不能让这个工作:

UPDATE orders, items SET orders.total_price = (SELECT SUM(items.qt*items.unit_price)
FROM items GROUP BY items.order_id) WHERE orders.id = items.order_id

它返回“子查询返回超过1行”

我在这里发现了一个非常类似的问题,但答案对我来说并不适用:

UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)

共有1个答案

宋正真
2023-03-14

您可以使用连接更新这两个表:

UPDATE Orders o 
INNER JOIN
(
   SELECT order_id, SUM(qt * unit_price) 'sumu'
   FROM items 
   GROUP BY order_id
) i ON o.id = i.order_id
SET o.total_price = i.sumu
[WHERE predicate]

 类似资料:
  • 我正在尝试使用此查询更新一些记录,这基本上只是一种为客户设置“状态”的方法,考虑到他们“自上次订单以来的日子”: 但是我得到了: 错误代码: 1175年。您正在使用安全更新模式,并且您尝试更新不使用使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换首选项中的选项 - 我在最终 中使用表键, 是表键。使用 不是一个选项。我还尝试使用 (我想我看到了曙光,但是没有),得到一个< code>P

  • 问题内容: 我有两个表,一个名为同一列中,他说,。 我想,从复制,,,以,,,分别,这里的是一样的,如何做到这一点的SQL语句? 问题答案: 只要您有合适的索引,它就可以正常工作: sqlite3中的UPDATE不支持FROM子句,这使它比其他RDBMS的工作量更多。 如果性能不令人满意,则另一个选择可能是使用select为table_a建立新行,并与table_a联接到临时表中。然后从table

  • 问题内容: 我正在尝试使用相同的表查询更新行。语境: 我想:对于每一行;如果 TEXT为NULL ; 使用具有相同ID且LANG =’EN’的行的TEXT值更新它。 做这样的事情的SQL请求是什么? 问题答案: 您没有指定数据库。以下是标准SQL: 如果出现重复,则应执行以下操作: 编辑: 当然,并非所有数据库都支持所有ANSI标准功能。在MySQL中,您可以改用:

  • 问题内容: 我正在尝试使用同一表中不同行(和不同列)中的值更新表中的行。尽管我的语法没有任何结果,但与此类似:这是代码(已更新): 问题答案: 或者,简单地

  • 编辑:在阅读文档之后,getInstallerPackageName()给出安装程序的包名。 因此,在传递时,上面的代码将用户带到GooglePlaystore中我的应用程序的屏幕。所以,即使知道安装程序的包名也没有帮助,因为我不能将用户发送到同一屏幕。

  • 问题内容: 我有一张桌子,看起来像这样 我正在寻找一种方法,以使用“ VALUE”列中其他行中具有相同“ NAME”的数据更新值“ Test2”和“ Test”(此处ID并非唯一,ID的复合键和NAME成为唯一的一行)。例如,我正在寻找的输出是: 如果在另一个表中,我会没事的,但是我对于如何使用相同的NAME值引用当前表中的另一行感到困惑。 更新资料 修改完manji查询后,下面是我用于有效解决方