1

我正在创建一个照片排名系统。基本上,我有三个主要领域——赢了、输了、玩了多少。

假设我有三张照片

Photo  Won  Lost  Played
-------------------------
A      3    2     5
B      1    4     5
C      3    2     5

我将编写一个查询来获取每张照片的排名。问题是,照片​​ A 和照片 C 的记录完全相同。如何对照片 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”字段而不是“played”。"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

我想做的事 :

  1. 仅查询“照片 A”并获得它的排名。
  2. 查询所有记录并显示每条记录的排名。

我可以通过以下查询执行#2。

"select * from table order by ratio desc"

但是又出现了问题。照片 A 和 C 具有相同的比例。我需要让他们都排名第一。

4

2 回答 2

1

如果您的意思是“返回 1”作为返回 1 的排名记录?-> 未测试,但它可以像这样组合 GROUP BY 和 GROUP_CONCAT:

SELECT Won, Lost, Played, GROUP_CONCAT( photo, ', ' ) AS photos
FROM your_table
GROUP BY Won, Lost, Played
于 2011-03-17T00:47:04.157 回答
1

未测试

SELECT *
FROM photos
ORDER BY (played/lost)

我认为它返回:

Photo A // rank1
Photo C // rank1
Photo B // rank2
于 2011-03-17T00:51:53.810 回答