如何从表2创建和并显示数据表1和表2



表格A:

id 发票
1 001
2 002

在MySQL 8+上,我们可以通过使用分析函数在没有子查询的情况下处理此问题

SELECT
b.id,
a.invoice,
b.price AS total,
SUM(b.price) OVER (PARTITION BY a.id) AS count
FROM TableB b
LEFT JOIN TableA a
ON a.id = b.aid;

在早期版本的MySQL上,或者如果你是从一个不喜欢分析函数的ORM层来做这件事,我们也可以尝试使用连接来聚合计数:

SELECT
b1.id,
a.invoice,
b1.price AS total,
COALESCE(b2.count, 0) AS count
FROM TableB b1
LEFT JOIN TableA a
ON a.id = b1.aid
LEFT JOIN
(
SELECT aid, SUM(price) AS count
FROM TableB
GROUP BY aid
) b2
ON b2.aid = b1.aid;

最新更新