Я пытаюсь вернуть первое сообщение между двумя пользователями, отправил ли я это сообщение или получил его. Я кодировал приведенный ниже запрос, который возвращает все правильные потоки, но, похоже, игнорирует предложение DISTINCT - и в результате я получаю несколько результатов с одним и тем же 'someid'.
Как исправить этот запрос, чтобы в результирующем столбце '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