【发布时间】:2011-10-21 20:51:03
【问题描述】:
我有一个表,我需要按两个不同的列对条目进行分组
这是我的代码
SELECT *
FROM (
SELECT max(user_msg.id) AS mid, max(user_msg.timestamp) AS tsp, user_msg.text,
usr1.id AS u1_id, usr1.nickname AS u1_nickname, usr1.avatar AS u1_avatar, usr1.avatar_art AS u1_avatar_art,
usr2.id AS u2_id, usr2.nickname AS u2_nickname, usr2.avatar AS u2_avatar, usr2.avatar_art AS u2_avatar_art,
COUNT(user_msg.id) AS cnt
FROM user_msg
join user using (client_id)
LEFT JOIN user AS usr1 ON user_msg.from_id=usr1.id
LEFT JOIN user AS usr2 ON user_msg.to_id=usr2.id
WHERE user_msg.to_id = '".$user_id."' AND to_delete='0' OR user_msg.from_id = '".$user_id."' AND to_delete='0'
group by u1_id, u2_id ORDER by tsp DESC
) c
它应该类似于 group by u1_id AND u2_id
【问题讨论】:
-
看起来不错。你有什么问题?
-
这与您的问题无关,但我认为您应该在您的条件周围添加一些括号,例如 (user_msg.to_id = '".$user_id."' AND to_delete='0') OR ( user_msg.from_id = '".$user_id."' AND to_delete='0')
-
请贴出你得到的错误信息,或者错误的结果。