会話などのメッセージをグループ化し、会話からの最新のメッセージのみを表示しようとしているため、列に最大の番号を持つメッセージが必要ですtime
。
これは私のクエリです:
SELECT *
FROM console_msgs
WHERE `to` = $user[id]
GROUP BY `from`
ORDER BY time DESC
助けてくれてありがとう!
グループごとの最大値が必要です:
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]
GROUP BY
あなたは私があなたが求めていると思うことを達成するために使用したくないでしょう。あなたはただ複数の注文バイが欲しい
SELECT *
FROM console_msgs
WHERE `to` = $user[id]
ORDER BY `from`, time DESC
返される必要がある結果セットがよくわかりませんが、上位の結果のみを返すには LIMIT キーワードを使用する必要があると思います。これを試してください:
SELECT from, MAX(time)
FROM console_msgs
WHERE `to` = $user[id]
GROUP BY `from`
ORDER BY time DESC
LIMIT 1