我试图返回两个用户之间的第一条消息,无论我是发送该消息还是收到它。我编写了下面的查询,它返回所有正确的线程,但似乎忽略了DISTINCT子句 - 最后我得到了多个具有相同'someid'的结果。SELECT DISTINCT在CASE语句后不工作
如何纠正此查询,以便在结果'someid'列中不会有重复值返回?
这里就是我目前使用:
SELECT DISTINCT CASE WHEN $userid != senderid THEN senderid ELSE GROUP_CONCAT(receivers.id SEPARATOR ', ') END someid,
CASE WHEN $userid != senderid THEN senders.username ELSE GROUP_CONCAT(receivers.username SEPARATOR ', ') END somename,
messages.body,
messages.time
FROM messages
LEFT JOIN messages_recipients AS recipients ON messages.id = recipients.messageid
LEFT JOIN users AS senders ON messages.senderid = senders.id
LEFT JOIN users AS receivers ON recipients.userid = receivers.id
WHERE recipients.userid = $userid
OR messages.senderid = $userid
GROUP BY messages.id
ORDER BY messages.time DESC
我想你将不得不闯入2个查询,内部执行SomeId上的Distinct ... – 2011-04-13 00:10:23
我会在哪里放置该查询? – Walker 2011-04-13 01:28:00