2013-01-16 50 views
2

我想在mysql中获得最高分数。我怎样才能在mysql中获得最高分数datewise

,当我跑这个查询: -

select tid from post order by marks desc limit 0,10; 

我得到的最高分,但不datewise。

而当我运行此查询。

select tid from post order by date desc limit 0,10. 

我获得价值日期明智的第一... 但我想要得到的最高分日期明智..

例如我的表是: -

s.no marks date 
1  97  15-01-2013 
2  104  14-01-2013 
3  100  16-01-2013 
4  105  16-01-2013 

所以,我想要得到

s.no marks date 
4  105  16-01-2013 
3  100  16-01-2013 
1  97  15-01-2013 
2  104  14-01-2013 

回答

0

试试这个:

SELECT tid, marks, date 
FROM post 
ORDER BY date DESC, marks DESC 
LIMIT 0,10; 

入住这SQL FIDDLE DEMO

输出

| ID | MARKS |       DATE | 
----------------------------------------------- 
| 4 | 105 | January, 16 2013 00:00:00+0000 | 
| 3 | 100 | January, 16 2013 00:00:00+0000 | 
| 1 | 97 | January, 15 2013 00:00:00+0000 | 
| 2 | 104 | January, 14 2013 00:00:00+0000 | 
+0

它只返回明智的日期 - 不工作 –

+0

@ user1982661检查演示链接。 –

+0

@ user1982661表中的日期列的数据类型是什么? –

0

要获得在您的问题中显示的结果,您只需要首先按da TE,然后通过标记:

SELECT * FROM post ORDER BY date DESC, marks DESC LIMIT 10 

但是,如果你想从每个日期的最高分,你需要你的表上的日期,从每个组中选择最高分:

SELECT date, MAX(marks) AS marks FROM post GROUP BY date LIMIT 10 

如果你想从最大记录的其他数据,如tid,那么你必须加入这个查询的结果返回到您的表:

SELECT post.* FROM post NATURAL JOIN (
    SELECT date, MAX(marks) AS marks FROM post GROUP BY date LIMIT 10 
) t 
+0

我得到的错误: - '每个派生的表必须有自己的alias' –

+0

@ user1982661:包括那个尾随的't'。 – eggyal

0
SELECT 
     post.date, 
     p.Marks 
FROM post 
INNER JOIN (
      SELECT 
       MAX(marks) as Marks , 
       date , 
       s.no 
      FROM posts 
      GROUP BY s.no 
      ) as p ON p.date = post.date 
ORDER BY post.date 
+0

SAME日期明智只...不工作 –