我有一个与此类似的表结构:
send_id | rec_id
它填充了以下示例数据:
id1 | id2
id2 | id1
id3 | id1
id3 | id2
id4 | id1
id1 | id4
我尝试在 id1 上使用此查询:
SELECT * from inbox 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
我可以看到出了什么问题,但如何解决它?
最佳答案
这是使用 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';
关于php - 如何从表中删除重复/对应的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583559/