Я хочу получить последнюю дату создания между отправителем и получателем в моей таблице, где отправитель или получатель = 002, а затем группа отправителем и получателем. В конце сообщите, является ли элемент отправителем или получателем с точки зрения 002.MYSQL Макс. Группа дат по двум столбцам
Это всего лишь пример данных.
стол
id sender | receiver | create_date
1 001 002 2015-10-13 10:30:01
2 003 002 2015-11-06 15:30:59
3 001 002 2015-11-02 05:30:01
4 001 002 2015-11-03 11:08:22
5 002 004 2015-10-20 12:15:36
6 002 004 2015-11-03 17:35:10
7 002 005 2015-09-01 06:02:20
8 002 001 2015-11-06 15:10:32
Результат должен выглядеть следующим образом
id | member | type | create_date
2 003 sender 2015-11-06 15:30:59
6 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
8 001 receiver 2015-11-06 15:10:32
До сих пор я пытался:
1)
SELECT
id,
IF(sender <> '002', sender, receiver) AS member,
IF(sender <> '002', 'sender', 'receiver') AS type,
MAX(create_date) AS max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
GROUP BY
member
Это результат, который я получил в конце.
id | member | type | create_date
1 001 sender 2015-11-06 15:10:32
2 003 sender 2015-11-06 15:30:59
5 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
Я изо всех сил пытаюсь получить последнюю текущую строку, но не проблема с create_date.
2) Я также попытался использовать внутреннее соединение.
SELECT
*
FROM
table a
INNER JOIN
(
SELECT
id,
MAX(create_date) as max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
) b ON b.max_date = a.create_date
Это хорошо работает для получения последней записи строки. Но что, если мне нужно получить строки с последним create_date, но сгруппировать отправителем и получателем?
Это путь, если вам не нужно 'id'. – vhu
@ vhu true, я пропустил это. Если вам нужен идентификатор, вам нужно будет присоединиться к этому. Если идентификатор находится в том же порядке, что и дата создания, вы можете просто взять max (id) – AdrianBR