我正在创建一个照片排名系统。基本上,我有三个主要领域 - 赢了,输了,怎么玩。
假设我有三张照片
Photo Won Lost Played
-------------------------
A 3 2 5
B 1 4 5
C 3 2 5
我打算写一个查询来获得每张照片的排名。问题是,照片A和照片C具有完全相同的记录。如何为Photo A和C创建一个返回1的查询?
Photo Won Lost Played Rank
-------------------------------
A 3 2 5 1
C 3 2 5 1
B 1 4 5 ?
于2011年3月17日添加
我稍微更改了表格结构
所以现在我有“vote_ratio”字段而不是“播放”字段。 “vote_ratio”保存“vote_win”/“vote_lose”的值。
所以必须将表修改为
Photo Won Lost Ratio
A 3 2 1.5
B 1 4 0.25
C 3 2 1.5
我想做什么:
我可以通过以下查询来做#2。
"select * from table order by ratio desc"
但又出现了问题。照片A和C具有相同的比例。我需要让他们两个排名第一。
答案 0 :(得分:1)
如果你的意思是“返回1”作为返回1的排名记录? - >未经测试,但它可以组合GROUP BY和GROUP_CONCAT,如下所示:
SELECT Won, Lost, Played, GROUP_CONCAT( photo, ', ' ) AS photos
FROM your_table
GROUP BY Won, Lost, Played
答案 1 :(得分:1)
未经测试
SELECT *
FROM photos
ORDER BY (played/lost)
我认为它会回归:
Photo A // rank1
Photo C // rank1
Photo B // rank2