2013-01-16 52 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日期明智只...不工作 –