3

私はmysqlで日付ごとに最高のマークを取得しようとしています.

このクエリを実行したとき:-

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

私は最高点を取りますが、日付ごとではありません。

そして、このクエリを実行すると。

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
4

3 に答える 3

1

これを試して:

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 |
于 2013-01-16T07:03:26.500 に答える
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  
于 2013-01-16T07:04:13.470 に答える
0

質問に示されている結果を取得するには、最初に日付で、次にマークでテーブルを並べ替えるだけです。

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
于 2013-01-16T06:57:52.140 に答える