我有一个与此类似的表结构:
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
我可以看到出了什么问题,但我该如何解决?
答案 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';