1

会話などのメッセージをグループ化し、会話からの最新のメッセージのみを表示しようとしているため、列に最大の番号を持つメッセージが必要ですtime

これは私のクエリです:

SELECT * 
FROM console_msgs 
WHERE `to` = $user[id] 
GROUP BY `from` 
ORDER BY time DESC

助けてくれてありがとう!

4

3 に答える 3

1

グループごとの最大値が必要です:

SELECT console_msgs.*
FROM   console_msgs NATURAL JOIN (
         SELECT   MAX(time) AS time
         FROM     console_msgs
         WHERE    `to` = $user[id]
         GROUP BY `from`
       ) t
WHERE  `to` = $user[id]
于 2012-08-31T15:32:53.393 に答える
0

GROUP BYあなたは私があなたが求めていると思うことを達成するために使用したくないでしょう。あなたはただ複数の注文バイが欲しい

SELECT * 
FROM console_msgs 
WHERE `to` = $user[id] 
ORDER BY `from`, time DESC
于 2012-08-31T15:36:45.093 に答える
0

返される必要がある結果セットがよくわかりませんが、上位の結果のみを返すには LIMIT キーワードを使用する必要があると思います。これを試してください:

SELECT from, MAX(time) 
FROM console_msgs 
WHERE `to` = $user[id] 
GROUP BY `from` 
ORDER BY time DESC
LIMIT 1
于 2012-08-31T15:32:22.043 に答える