У меня есть таблица, содержащая журналы сообщений.Каждый разговор имеет идентификатор разговора.
Я хочу выбрать отдельные идентификаторы разговора, и для каждого из них найти последнее сообщение с этим идентификатором разговора и присоединить его к строке.
Это то, что я пробовал, но это не такДобавить в таблицу все данные, кроме двух столбцов (conversationId
и id
).Я хочу получить все столбцы из этой таблицы для каждой строки с самой последней
SELECT
logs.conversationId,
-- latest message id
MAX(logs.id) AS id
FROM [dbo].[Logs] AS logs
-- trying to get the remaining columns for the last message with that conversation ID
LEFT JOIN [dbo].[Logs] AS logs2 ON logs.id = logs2.id
WHERE
-- only conversations for last month
logs.timestamp >= DATEADD(month, -1, GETDATE())
GROUP BY logs.conversationId
Когда я пытаюсь добавить другой столбец в SELECT
, я получаю сообщение об ошибке, в котором говорится, что мне нужно добавить этот столбец в GROUP BY
пункт.Но это приводит к тому, что оператор выполняется в течение очень длительного времени, более 20 секунд, для всего лишь нескольких десятков строк в результате.