有如下表:
id   sender   receive
1    1        7
2    7        1
3    6        1
4    1        6
5    6        1
6    1        7
7    1        7
 
我想得到如下结果
id   sender   receive
1    1        7
3    6        1就是只得到sender和receive没有交互的一条记录
求解..感激不尽呀.
附sql语句
CREATE TABLE IF NOT EXISTS `cym_message` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `sender` int(10) unsigned NOT NULL COMMENT '发件人ID',
  `receive` int(10) unsigned NOT NULL COMMENT '收件人ID',
  PRIMARY KEY (`id`),
  KEY `sender` (`sender`),
  KEY `receive` (`receive`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(1, 1, 7),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(2, 7, 1),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(3, 6, 1),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(4, 1, 6),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(5, 6, 1),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(6, 1, 7),
INSERT INTO `cym_message` (`id`, `sender`, `receive`) VALUES(7, 1, 7)

解决方案 »

  1.   

    select min(id),sender,receive
    from (
    select id ,sender ,receive
    from cym_message
    union all
    select id  ,receive,sender
    from cym_message
    )
    where sender<receive
    group by sender,receive
      

  2.   

    mysql> select id,sender,receive from (select id,sender,receive from cym_message group by sender) a group by receive;+----+--------+---------+
    | id | sender | receive |
    +----+--------+---------+
    |  3 |      6 |       1 |
    |  1 |      1 |       7 |
    +----+--------+---------+
    2 rows in set (0.00 sec)
      

  3.   

    id   sender   receive
    1    1        7
    2    7        1不算交互?
      

  4.   


    就是交互只取一条,谢谢各位前辈由于效率和分组排序的问题.
    最终我还是建了个有unique字段(包含排序后的sender,receive)的表,还排除重复!