Я пытаюсь написать оператор mysql, который извлекает только уникальные сообщения из моей системы чата. Существует файл to_id и from_id. Я хочу вытащить один ряд из каждого разговора.Оператор Mysql для выбора отдельных строк из двух столбцов
Проблема заключается в том, есть ли строка с to_id = 1 from_id = 2 и другой ряд с to_id = 2 from_id = 1 Я хочу обоих этих строк, которые будут рассматриваться как то же самое.
Утверждение, которое я придумал, это «SELECT * FROM chat_messages GROUP BY to_id, from_id». Это работает, за исключением ситуации, о которой я говорил выше.
Еще одна попытка, которую я сделал, заключалась в том, чтобы использовать «SELECT DISTINCT наименьшее (to_id, from_id) как значение1, наибольшее (to_id, from_id) как значение2 из chat_messages».
Это возвращает то, что мне нужно, но я не знаю, как получить остальную информацию из строки, как сообщение, метка времени и т.д. Это дает только мне значение1 & значение2 которые являются to_id & from_id.
@ hunijkah: Мой ответ, вероятно, заслуживает внимания. Примерный запрос зависит от расширения, специфичного для MySQL, для поведения GROUP BY. Оператор вернет ошибку в MySQL, если включен режим SQL ONLY_FULL_GROUP_BY'. Запрос этой формы возвращает ошибку в СУБД, отличную от MySQL (например, SQL Server, Oracle, Teradata, DB2 и др.) – spencer7593
Это замечательно, но как заказать это, чтобы вернуть самую последнюю строку. Я пробовал с порядком по id desc, но он всегда возвращает самый низкий id –
Мне было интересно, как мне отсортировать новейшие? – Arda