需要SELECT * FROM的建议

时间:2016-01-21 22:30:40

标签: mysql sql

SELECT * 
FROM `users` 
WHERE `lose` > '1' 
AND `win` > '1' 
ORDER BY win DESC 
LIMIT ".$lowerlimit.", 30

这适用于游戏网站上的排行榜。问题是:

Players        Win       Lose
Player 1:      94         40
Player 2:      91         56
Player 3:      9          12
----------------------------
Player 12:     82         50
Player 13:     8          10

玩家12必须在第3位。我做错了什么?

2 个答案:

答案 0 :(得分:2)

现在,它按字母顺序排序。将发生的所有数据都作为数字并不重要。您需要更新架构以将赢或输存储为数字数据类型,例如:

CREATE TABLE users
(
  players text,
  win int,
  lose int
);

然后将您的查询更改为:

SELECT * 
FROM `users` 
WHERE `lose` > 1
AND `win` > 1
ORDER BY win DESC 
LIMIT ".$lowerlimit.", 30

另外,我想在排行榜上,你想让那些永远迷失的人,对吗?您可能想要删除WHERE lose > 1

答案 1 :(得分:0)

如果输赢不是text / ntext列,那么您可以尝试使用以下代码

SELECT * 
FROM users 
WHERE cast(lose as int) > 1
AND cast(win as int)> 1
ORDER BY cast(win as int) DESC
LIMIT ".$lowerlimit.", 30