1

mysql クエリに問題があります。誰か問題を解決できますか? ここにデータがあります

        m_to    m_from  m_id    m_time 
        5       5       1       1374769716
        5       5       2       1374771178
        5       5       3       1374771294
        5       5       4       1374771396
        5       5       5       1374771784
        1       5       6       1374772120
        1       5       7       1374773097
        5       1       8       1374773579
        5       1       9       1374774095
        5       1       10      1374774148
        1       5       11      1374777304
        444     5       12      1374779752
        5       444     13      1374780378
        5       5       14      1374781374
        5       5       15      1374832375
        444     5       16      1374837258
        5       444     17      1374837525
        5       444     18      1374838801
        444     5       19      1374838976
        1       5       20      1374842736
        5       5       21      1374842954
        444     5       22      1374843389
        5       5       23      1374843466
        1       5       24      1374843853
        1       5       25      1374848855
        444     5       26      1374848889
        5       5       27      1374848912
        1       5       28      1374849001
        5       5       29      1374849056
        444     5       30      1374850406

最初の列は「m_to」、2 番目は「m_from」、3 番目は「m_id」、4 番目は「m_time」です。

今私が欲しいのは、m_from でグループ化し、m_time で並べ替えたいということです。しかし、追加される新しいメッセージは一番上にあり、次の行は2番目にあるはずです......など

利用した。

SELECT m_from,m_time
FROM messages
WHERE m_to='5'
GROUP BY m_from
ORDER BY m_time DESC

しかし、このような結果になっています

444
1
5

そのため、データを正しくソートしていません..

新しいメッセージが bt 5 に追加された場合、5 は同じ位置に留まり、まったく変化しません。この問題を解決し、ここで何が間違っているのか教えてください。

4

3 に答える 3

0

これを試して

   SELECT m_from, max(m_time) as time from messages 
   where m_to = 5 group by m_from order by time desc;

デモはこちら

出力が得られます

M_FROM  TIME
 5      1374849056
 444    1374838801
 1      1374774148
于 2013-07-26T16:53:19.937 に答える
0

あなたの問題を正しく理解していれば、これは次のとおりです。

SELECT m_from, max(m_time) as max_time from messages where m_to = 5 group by m_from order by max_time desc;

あなたのために働くはずです。

于 2013-07-26T16:52:09.693 に答える