【发布时间】:2015-04-11 14:51:27
【问题描述】:
我有下表来表示用户之间的对话。
message | user1 | user2 | unixtime
msg1 | 14 | 21 | -
msg2 | 21 | 12 | -
msg1 | 14 | 18 | -
msg3 | 14 | 21 | -
msg2 | 18 | 14 | -
msg4 | 21 | 12 | -
我想通过选择 current_user = user1 或 user2 的所有消息来显示特定用户的对话列表。 到目前为止,此 SELECT 将选择正确的消息,但分组无法正常工作。
SELECT * FROM (
SELECT * FROM messages
WHERE user1 = '".$_SESSION['login']['ID']."'
OR user2 = '".$_SESSION['login']['ID']."'
ORDER BY unixtime DESC
) as list
GROUP BY user1, user2
ORDER BY unixtime DESC
它只会将具有相同 user1 和 user2 的消息分组,如果两个用户颠倒则不会。 这是通过更高级的分组完成的还是我应该以某种方式加入表格?
【问题讨论】:
-
您可以按 LEAST(user1, user2), GREATEST(user1, user2) 分组,但您想做什么?您正在选择所有列 * 并仅按两列分组