如何从表中删除重复/对应的值?

时间:2014-03-22 21:02:47

标签: php mysql sql

我有一个与此类似的表结构:

  

send_id | ·REC_ID

填充以下示例数据:

  

id1 | id2

     

id2 | id1

     

id3 | id1

     

id3 | id2

     

id4 | id1

     

id1 | ID4

我的尝试是在id1上使用此查询:

  

SELECT *来自收件箱WHERE(send_id =" id1" OR rec_id =" id1")GROUP BY send_id,rec_id

但它没有正常工作,而是显示:

  

id1 | id2

     

id2 | ID1

     

id3 | id1

     

id1 | id3

     

id4 | ID1

我希望输出是这样的:

  

id1 | id2

     

id3 | id1

     

id4 | ID1

我可以看到出了什么问题,但我该如何解决?

1 个答案:

答案 0 :(得分:1)

这是使用least()greatest()函数的好地方:

SELECT least(send_id, rec_id) as id1, greatest(send_id, rec_id) as id2
from inbox
WHERE send_id = 'id1' OR rec_id = 'id1'
GROUP BY least(send_id, rec_id), greatest(send_id, rec_id);

或者,如果您愿意:

SELECT distinct least(send_id, rec_id) as id1, greatest(send_id, rec_id) as id2
from inbox
WHERE send_id = 'id1' OR rec_id = 'id1';