MySQL-仅通过将源表中的一行聚合值追加到主机表中的每个选定行进行连接

MySQL-仅通过将源表中的一行聚合值追加到主机表中的每个选定行进行连接,mysql,join,Mysql,Join,我有一个情况,我可以用一种简单的方式描述如下 表A包含字段X、Y和Z 表B是带有字段p和Q的参考表 Y目标将p作为外部参考 X-Y未设置为唯一,因为成对值是可重复的 X-Y-Z通常是不同的,但Z是类型中唯一的文本,因此它没有索引 在表a中的select查询中,我只想根据它们的Y值将Q的所有值的sum追加到每一行。但当我执行以下操作时,它只为每个不同的X-Y值显示一行 select X, Z, sum(Q) from A where ___ join B on Y = P group by X,

我有一个情况,我可以用一种简单的方式描述如下

表A包含字段X、Y和Z

表B是带有字段p和Q的参考表

Y目标将p作为外部参考

X-Y未设置为唯一,因为成对值是可重复的

X-Y-Z通常是不同的,但Z是类型中唯一的文本,因此它没有索引

在表a中的
select
查询中,我只想根据它们的Y值将Q的所有值的
sum
追加到每一行。但当我执行以下操作时,它只为每个不同的X-Y值显示一行

select X, Z, sum(Q) from A where ___ join B on Y = P group by X, Y

是否有其他方法可以在我考虑添加ID字段作为最后选项之前?

< P>如果在派生表中执行从<代码> B <代码>的聚合,则可以“代码> >连接< /代码>到表<代码> A<代码>,以获得<代码> A/<代码>的每行的总和:

SELECT A.*, B.Q
FROM A
JOIN (SELECT P, SUM(Q) AS Q
      FROM B
      GROUP BY P) B ON B.P = A.Y

非常感谢。一定能解决我的问题。只是问问而已。这样做在性能上有什么缺点吗?@jerinho不担心。这应该是生成此结果的最有效的方法。