SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来
Posted
技术标签:
【中文标题】SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来【英文标题】:SQL combine COUNT and AVG query with SELECT 【发布时间】:2011-11-17 01:39:34 【问题描述】:我需要获取特定用户的平均评分和评分总数,然后还要选择所有单个评分(rating_value、rating_text、creator):
$rating_query = mysql_query("SELECT COUNT(1) as rating_count
,AVG(rating_value), rating_value, rating_text, creator
FROM user_rating WHERE rated_user = $user_id");
此查询将返回每行的 COUNT(1) 结果和 AVG(rating_value),但我只需要这些值一次。
有没有办法在不进行 2 次单独查询的情况下做到这一点?
【问题讨论】:
Is there any way to do this without making 2 separate queries?
否
为什么要在一个查询中包含这个? rating_count
和 AVG(rating_value)
结果将针对每一行重复。不妨查询一次。
如果您提供您正在寻找的输出类型的样本,可以帮助人们想象您正在尝试完成的事情。
【参考方案1】:
可能有一个我不知道的技巧,但我认为这不可能在单个查询中完成。如果这对您有意义,您可以尝试使用 GROUP BY
子句,但我猜它可能与您使用的列名无关。任何关系都需要在任何给定的行和列上都有一个原子值,即使该值为空。您要求的是每行中的第 1 列和第 2 列,但第一列没有价值,我再次认为这是不可能的。
【讨论】:
以上是关于SQL 将 COUNT 和 AVG 查询与 SELECT 结合起来的主要内容,如果未能解决你的问题,请参考以下文章