我可以在哪里选择Distinct并获取mysql中的所有选择吗?

时间:2015-09-20 20:32:06

标签: mysql

我有这个:

SELECT FirstName
FROM MAIN_TABLE_LEVEL100
WHERE FirstName IN
    (
        SELECT DISTINCT FirstName
        FROM MAIN_TABLE_LEVEL100
    )
ORDER BY `level` DESC, `time` DESC LIMIT 0,10

我试图按级别和时间排序前十名不同的名字,但如果有人可以帮助我,那就不行了,谢谢。

3 个答案:

答案 0 :(得分:0)

你的where子句什么都不做,你只是重复了上面的选择。只要级别和时间在'MAIN_TABLE_LEVEL100'中,您甚至不需要where子句。这应该有效:

SELECT DISTINCT FirstName, level, time
FROM MAIN_TABLE_LEVEL100
ORDER BY level DESC, time DESC LIMIT 10

答案 1 :(得分:0)

由于时间原因,您可以拥有多条线路。尝试先将数据汇总在一起。 我不熟悉mySql,但是使用通用的SQL语法会是这样的:

SELECT b.FirstName
FROM (SELECT a.FirstName, a.Level, MAX(a.Time) AS tm FROM MAIN_TABLE_LEVEL100 as a GROUP BY a.FirstName, a.Level) AS b
ORDER By b.Level, b.tm

答案 2 :(得分:0)

谢谢大家,我终于找到了正确答案!:

SELECT o.FirstName, o.Level, o.Time, o.City
FROM `MAIN_TABLE_LEVEL100` o                    # 'o' from 'bigger points'
  LEFT JOIN `MAIN_TABLE_LEVEL100` b             # 'b' from 'bigger after o'
      ON o.FirstName = b.FirstName AND o.Points < b.Points
WHERE b.Points is NULL
ORDER BY `o`.`Points`  DESC
LIMIT 0,10

感谢大家,我希望有人需要它;)