Desidero ottenere l'ultima data di creazione tra mittente e destinatario nella mia tabella in cui mittente o destinatario = 002 e quindi raggruppare per mittente e destinatario. Alla fine notificare se il membro è mittente o destinatario dalla visualizzazione di 002.MYSQL Gruppo di date massimo per due colonne
Questo è solo un esempio di dati.
tavolo
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
Il risultato dovrebbe essere simile a questo
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
Finora ho provato:
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
Questo è il risultato che ho ottenuto alla fine.
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
Mi sforzo di ottenere l'ultima riga corrente ma nessun problema con create_date.
2) Ho provato anche a utilizzare inner join.
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
Questo funziona bene solo per il recupero dell'ultimo record di riga. Ma cosa succede se ho bisogno di recuperare le righe con l'ultimo create_date ma raggruppate per mittente e destinatario?
Questa è la strada da percorrere se non è necessario 'id'. – vhu
@ vhu vero, mi sono perso. Se vuoi l'ID dovrai fare un ritorno a questo. Se l'ID è nello stesso ordine della data di creazione, puoi anche prendere il massimo (id) – AdrianBR