Mysql 按上次发送/接收的邮件对用户进行分组

Mysql 按上次发送/接收的邮件对用户进行分组,mysql,sql,Mysql,Sql,我有一个tbl: CREATE TABLE if not exists tblA ( id int(11) NOT NULL auto_increment , sender varchar(255), receiver varchar(255), msg varchar(255), date timestamp, idmsg int(11) , name varchar(255), PRIMARY KEY (id) ); INSERT INTO tblA (sender, r

我有一个tbl:

CREATE TABLE if not exists tblA
(
id int(11) NOT NULL auto_increment ,
sender varchar(255),
receiver varchar(255),
 msg varchar(255),
 date timestamp,
  idmsg int(11)  ,
name varchar(255),
 PRIMARY KEY (id)
);




INSERT INTO tblA (sender, receiver,msg,date,name,idmsg ) VALUES
('1', '2', 'buzz ...','2011-08-21 14:11:09','Bb','1'),
('1', '2', 'test ...','2011-08-21 14:12:19','Bb','2'),
('1', '2', 'check ...','2011-08-21 14:13:29','Bb','3'),
('1', '1', 'test2 ...','2011-08-21 14:14:09','Aa','4'),
('2', '1', 'check2 ...','2011-08-21 14:15:09','Bb','5'),
('2', '1', 'test3 ...','2011-08-21 14:16:09','Bb','6'),
('1', '2', 'buzz ...','2011-08-21 14:17:09','Bb','7'),
('1', '2', 'test ...','2011-08-21 14:18:19','Bb','8'),
('1', '2', 'check ...','2011-08-21 14:19:29','Bb','9'),
('1', '1', 'test2 ...','2011-08-21 14:10:09','Aa','10'),
('3', '1', 'check2 ...','2011-08-21 14:21:09','Cc','11'),
('3', '1', 'test3 ...','2011-08-21 14:22:09','Cc','12'),
('1', '3', 'check ...','2011-08-21 14:26:29','Cc','13'),
('1', '3', 'test2 ...','2011-08-21 14:27:09','Cc','14'),
('1', '2', 'check3 ...','2011-08-21 14:23:09','Bb','15'),
('1', '4', 'test2 ...','2011-08-21 14:27:09','Dd','16'),
('1', '5', 'test2 ...','2011-08-21 14:27:09','Ee','17'),
('1', '7', 'test3 ...','2011-08-21 14:29:09','Gg','18');
如果1,2和2,1的最大值(日期)相同,如何获得发送方和接收方的不同组。我试过了,但没有得到确切的分组


我得到14:11:+09的1,2或2,1组合,但正确答案是14:23。同样,它也不会像检查1,2那样检查反转,但不会检查2,1。如何解决这个问题?

您似乎想要两个人之间的最新交流。我想这正是你想要的:

select least(receiver, sender), greatest(receiver, sender),
       max(date),
       substring_index(group_concat(msg order by date separator '|'), '|', 1) as msg,
       substring_index(group_concat(idmsg order by date), ',', 1) as idmsg,
       substring_index(group_concat(name order by date separator '|'), '|', 1) as name
from tblA 
where '1' in (Receiver, Sender)
group by least(receiver, sender), greatest(receiver, sender);

发布您所需的结果。结果与sql fiddle中包含的结果相同,但值应准确。与sms收件箱类似。添加到
中,其中
和发送方
中的“1,2而不是2,1”@Alexander您能在sql fiddle中更正它吗。@jason。但是,老实说,我不确定这是否是你想要的,因为我仍然不清楚你想要什么…谢谢你,先生。两个人之间的最新交流。就是这样。先生,我如何处理你之前展示的那个。我得到的是旧的日期,而不是max(日期)再次感谢。非常感谢您的时间和努力。谢谢您,先生。您能调查一下吗:。谢谢您,先生。很抱歉给您添麻烦。再次感谢。先生,您能调查一下这个问题吗。与上一张表的问题相同。无法分组: