我正在尝试按循环列出消息,主要作为 PDO 中的最后一条消息, 但我在 sql 中也有一个 group by 命令,但它不起作用。 我使用分组来避免页面中来自同一用户的多条消息。 因此,用户应该看到消息为 DESC,但分组依据避免了排名。
消息应列为(示例):
conversation 1: last message - from
conversation 2: last message - from
conversation 3: last message - from
每个对话都应包含唯一的发件人姓名,并且包含新消息的对话应位于顶部 (DESC)
我的sql代码:
SELECT *
FROM pm
WHERE pm_to={$session['id']}
GROUP BY pm_from
ORDER BY id DESC
pm_table结构是:
id - int(11) auto_increment
pm_from - int(11)
pm_to - int(11)
pm_content - text
最佳答案
要选择每个用户发送给给定用户 ($session['id']) 的最后一条消息,您需要:
- 获取每个对话的最新id列表
- 获取完整的消息列表
我已经编写了一个 SQL 查询,谁应该执行它。
SELECT pm.*
FROM pm
JOIN (SELECT MAX(id) AS id_pm
FROM pm
WHERE pm_to={$session['id']}
GROUP BY pm_from) DT1
ON DT1.id_pm = pm.id
ORDER BY id DESC
关于php - Group by 避免 order by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999747/