Mysql - группировка с несколькими столбцами - PullRequest
1 голос
/ 28 августа 2011

Я хочу создать потоковое представление

В таблице с, по, дате и в некоторых других столбцах

Я хочу вывести строки, сгруппированные из AND в

пример данных в БД

from,to,date
a,b,somedate
a,c,somedate
b,a,somedate

Запрос:

SELECT 
    from, to, date 
FROM 
    data 
GROUP BY 
    from, to 
ORDER BY 
    date DESC;

Результат, который я ожидаю, выглядит следующим образом: (откуда и куда сгруппированы вместе)

a,b,somedate
a,c,somedate

(b,a,somedate not shows because its in the a,b group) 

но это не так.

Общая идея заключается в том, чтобы иметь представление сообщений "по пользователю" .. где список отсортирован по получателям, по дате (не по сообщениям) ...

1 Ответ

4 голосов
/ 28 августа 2011

Если вы хотите, чтобы одна строка возвращалась для каждой комбинации (from, to):

SELECT one, two, MIN(somedate) 
FROM
( SELECT `from` AS one, `to` AS two, somedate 
  FROM data 
  WHERE `from` <= `to`
UNION ALL
  SELECT `to`, `from`, somedate 
  FROM data 
  WHERE `from` > `to`
) AS tmp
GROUP BY one
       , two
ORDER BY one
       , two

или, если вы хотите, чтобы все записи:

SELECT one, two, somedate 
FROM
( SELECT `from` AS one, `to` AS two, somedate 
  FROM data 
  WHERE `from` <= `to`
UNION ALL
  SELECT `to`, `from`, somedate 
  FROM data 
  WHERE `from` > `to`
) AS tmp
ORDER BY one
       , two
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...