SELECT *
FROM
( SELECT
col1 = dest,
col2 = MAX(timestampCol)
FROM
messages
WHERE
exp = ?
GROUP BY
dest
UNION
SELECT
col1 = exp,
col2 = MAX(timestampCol)
FROM
messages
WHERE
dest= ?
GROUP BY
exp
) tbl
ORDER BY col2
Это должно вернуть только одну строку за distinct
exp
/dest
, хотя я уверен, что это, вероятно, можно было бы сделать без союза; GROUP BY
получит только самую последнюю версию.
Обновлено SQL: Учитывая, что это возможно для exp
на одной записи, чтобы равняться dest
на той же или другой записи.
SELECT
CASE WHEN exp = ? THEN dest ELSE exp END AS col1
,MAX(timestampCol) AS col2
FROM
messages
WHERE
exp = ?
OR dest = ?
GROUP BY
(CASE WHEN exp = ? THEN dest ELSE exp END)
ORDER BY
MAX(timestampCol) DESC;
Вы можете рассмотреть вопрос о добавлении SQL Fiddle с некоторыми фиктивными данными, чтобы позволить пользователям лучше помочь вам.
Если есть несколько записей, которые метка времени вам требуется? – talegna
Мне просто нужно заказывать мои сообщения с новейшими объявлениями –
Ваш запрос не возвращает все отправленные вами сообщения. Он возвращает всех людей, с которыми вы общались, без дубликатов. –