理解 mysql 关联查询中的分组和别名
在 mysql 关联查询中,使用子查询或连接多个表时经常需要使用关联和分组。一个常见的问题是为什么需要使用 join 语句中的 on 条件和分组条件。
on 条件中的别名:p2.product_type = p1.product_type
p2 是一个别名,它代表 from product as p2 中的 product 表。使用别名是为了简化查询,避免使用长表名。
分组条件:group by p2.product_type
分组条件用于将查询结果按 p2.product_type 列的值进行分组。分组的目的是计算同一 product_type 的平均值,而不是计算整个表的平均值。
如果不分组
如果不分组,查询将计算所有行的平均值,而不仅仅是不同 product_type 的平均值。例如,以下查询将计算所有产品的平均价格:
select avg(price) from product;
登录后复制
分组后
分组后,查询将分别计算每种 product_type 的平均价格:
SELECT p2.product_type, AVG(p2.price) FROM product AS p2 GROUP BY p2.product_type;
登录后复制
通过分组,我们可以获得更具体的信息,比如不同产品类型的平均价格。