Mysql选择最大最大总和值

时间:2013-05-29 20:21:52

标签: php mysql sum max

我有一个包含一些图片数据和链接表的数据库。这些表是这样构建的:

---pictures---
picid    Lat  Lon
1        5    6
2        7    31
3        31   43
4        -3   35

---user2pictures---
picid   userid  vote
1       1      1
1       2      1
3       1     -1
3       2      1
4       2     -1

表格图片包含图片ID和一些关于图片的数据,表格user2votes包含来自图片的投票数据。每个用户都可以对图像进行投票,但他们只能投票1次,因此投票将为1(如)或-1(不喜欢)。

我想从图片表中选出投票数最多的图片。伪问题可能更好地解释我想要的东西: SELECT * FROM pictures WHERE (SELECT MAX(SUM(vote)) FROM user2pictures LIMIT 12

在这个例子中,图片1将返回顶部,图片3将返回,图片4将返回到最后一个。我真的不知道如何解决这个问题,一些正确方向的帮助将非常感谢!

谢谢!

3 个答案:

答案 0 :(得分:4)

答案是JOIN表格,SUM投票,ORDER从高到低的投票总和

SELECT pictures.*, SUM(user2pictures.vote) AS VoteTotal
FROM pictures
JOIN user2pictures ON pictures.picid = user2pictures.picid
GROUP BY pictures.picid
ORDER BY VoteTotal DESC
LIMIT 12

答案 1 :(得分:4)

试试这个

   select p.`picid`, `Lat`, `Lon` from pictures p
   inner join user2pictures u2p
   on p.picid = u2p.picid
   group by u2p.picid
   order by sum(vote) desc
   limit 12

DEMO

答案 2 :(得分:2)

我假设你也想要没有投票的照片。所以,你可以试试这个:

select 
    p.picId, sum(v.vote) as votes
from 
    pictures as p
    left join user2pictures as v on p.picId = v.picId
group by
    p.picId
order by
    sum(v.vote) desc
limit 12;

left join可让您在没有投票的情况下展示图片(votes列的值为0

希望这有帮助