我有两个具有这种设计的表
Invoices
-------
invoice_id
is_delivered
Data => (1, 'yes')
Invoice_products
----------------
ip_id
invoice_id
product_id
price
Data=> (1,1,1,5000), (2,1,2,7000)
现在我想要的是发票表的所有列和另一个表中的价格总和。像这样
invoice_id = 1
is_delivered = 'yes'
total = 12000
我试过了,但结果不正确。
SELECT * FROM invoices i INNER JOIN (SELECT invoice_id, SUM(price) AS total FROM invoice_products p ) AS t ON t.invoice_id = i.invoice_id;
我的 mysql 不是很好,但我试过了。有人愿意解释一下吗?
最佳答案
你有一些语法错误,你不需要子查询。
您只需从 invoice_products
中选择所有内容并计算 SUM
- 这很容易做到。您已经完成了,但不要错过 GROUP
子句,它将根据不同的 invoice_id
计算总和。如果您不需要它 - 只需省略 groub 子句。
之后,您只需加入 invoices
表即可从该表中获取一些其他信息。
最终结果如下所示:
SELECT i.invoice_id, i.is_delivered, p.invoice_id, SUM(p.price) AS total
FROM invoice_products AS p
INNER JOIN invoices AS i ON p.invoice_id = i.invoice_id
GROUP BY p.invoice_id;
关于mysql - 在 mysql 的子查询中执行 SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45172365/