php mysql查询前5个平均列

php mysql查询前5个平均列,php,mysql,Php,Mysql,我有一张照片排名表。我想根据3列(评级1、2、3)的平均值输出每个类别前5张照片的id 假设我有以下表格列(photoID、rating1、rating2、rating3) 默认情况下,MySql中的记录已按升序返回,但您可能希望使用DESC关键字,而不是ASC。如果您试图选择前5名,为什么要对评级1列取平均值 重读问题,重新提交新答案 $sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";

我有一张照片排名表。我想根据3列(评级1、2、3)的平均值输出每个类别前5张照片的id

假设我有以下表格列(photoID、rating1、rating2、rating3)


默认情况下,MySql中的记录已按升序返回,但您可能希望使用
DESC
关键字,而不是
ASC
。如果您试图选择前5名,为什么要对
评级1
列取平均值

重读问题,重新提交新答案

$sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";

你解释问题的方式不清楚,这可能是你想要的:

SELECT photoID, AVG((rating1+rating2+rating3)/3) as rating
FROM votes GROUP BY photoID ORDER BY rating DESC LIMIT 5

表中的类别在哪里?评级1、评级2、评级3是类别。每一行代表一位选民。每张照片可能有10个评分,我想用所有10个评分的平均值找出最高的5个评分。假设我有以下数据photoID 1 rating1 4;类光1比率1;类光2级1 10;类光2比率1 8。我希望输出是photoID 2,然后是photoID 1(即平均等级1分别为9和2.5)
$sth = "SELECT * FROM pics ORDER BY (rating1 + rating2 + rating3) desc LIMIT 5";
SELECT photoID, AVG((rating1+rating2+rating3)/3) as rating
FROM votes GROUP BY photoID ORDER BY rating DESC LIMIT 5
    SELECT 1            AS category
         , photoID
         , AVG(rating1) AS avg_rating
    FROM votes 
    GROUP BY photoID
    ORDER BY avg_rating DESC 
    LIMIT 5

  UNION ALL

    SELECT 2            AS category
         , photoID
         , AVG(rating2) AS avg_rating
    FROM votes 
    GROUP BY photoID
    ORDER BY avg_rating DESC 
    LIMIT 5

  UNION ALL

    SELECT 3            AS category
         , photoID
         , AVG(rating3) AS avg_rating
    FROM votes 
    GROUP BY photoID
    ORDER BY avg_rating DESC 
    LIMIT 5