Mysql 选择在sql中不反向重复的记录

Mysql 选择在sql中不反向重复的记录,mysql,sql,postgresql,Mysql,Sql,Postgresql,假设我们有一个简单的用户对表,有两列:user1和user2。此外,假设有些对以相反的顺序出现两次,而有些对则没有。例如,1,2对出现在user1=1和user2=2的记录中,以及user1=2和user2=1的另一个记录中,而1,3对只出现一次user1=1和user2=3 我想编写一个查询,返回所有对,但不包括重复,这意味着返回的查询每个对只出现一次。因此,对于上面的示例,对1,2应该仅显示为user1=1和user2=2或user1=2和user2=1,而不是两者 在postgre sql

假设我们有一个简单的用户对表,有两列:user1和user2。此外,假设有些对以相反的顺序出现两次,而有些对则没有。例如,1,2对出现在user1=1和user2=2的记录中,以及user1=2和user2=1的另一个记录中,而1,3对只出现一次user1=1和user2=3

我想编写一个查询,返回所有对,但不包括重复,这意味着返回的查询每个对只出现一次。因此,对于上面的示例,对1,2应该仅显示为user1=1和user2=2或user1=2和user2=1,而不是两者

在postgre sql中实现这一点最简单的方法是什么?

一个简单的方法是:

select user1, user2
from t
where user1 < user2 or
      not exists (select 1
                  from t t2
                  where t2.user1 = t1.user2 and t2.user2 = t1.user1
                 );
第一个条件返回user1where user1