Mysql SQL按相反顺序选择属性元组(而不是按顺序)

Mysql SQL按相反顺序选择属性元组(而不是按顺序),mysql,sql,select,duplicates,Mysql,Sql,Select,Duplicates,我有一个mysql表,其中有我的驱动程序日志条目。表中有两列:开始位置和结束位置。有时可能的是,结束的位置等于开始的位置(我认为这听起来合乎逻辑) 现在,我不想选择表中的条目,这些条目可以是tupel(x,y),但不能是(y,x) 例如: id | start_place | end_place ----------------------------------- 0 | New York | San Francisco ----------------------------

我有一个mysql表,其中有我的驱动程序日志条目。表中有两列:开始位置和结束位置。有时可能的是,结束的位置等于开始的位置(我认为这听起来合乎逻辑)

现在,我不想选择表中的条目,这些条目可以是tupel(x,y),但不能是(y,x)

例如:

id | start_place   | end_place
-----------------------------------
0  | New York      | San Francisco
-----------------------------------
1  | San Francisco | New York
id为1的行与id为0的行顺序相反,不应成为结果的一部分


有人有主意吗?有好几次我尝试使用subselect或where条件,如(x,y)!=(y,x)但这不起作用。

这可以通过
最小值
最大值
函数以及
分组方式来实现

select least(start_place,end_place), greatest(start_place,end_place)
from tbl
group by least(start_place,end_place), greatest(start_place,end_place)
having count(*) = 1
要使用其他列检索此类行,请使用

select *
from tbl
where (least(start_place,end_place), greatest(start_place,end_place)) 
in (select least(start_place,end_place), greatest(start_place,end_place)
    from tbl
    group by least(start_place,end_place), greatest(start_place,end_place)
    having count(*) = 1
   )

使用
最小值
最大值
不同值
获得不同的对:

select distinct
  least(start_place, end_place) as place1,
  greatest(start_place, end_place) as place2
from mytable;

您应该包括您尝试过的查询。您说您想取消id 1,因为id为0。您是否也准备好因为id 1而取消id 0?还是说,解雇哪一个和保留哪一个有关系?顺序有关系吗?如果您有一行具有
x,y
,但没有一行具有
y,x
,是否仍然可以显示
y,x
,而不是
x,y
?空值是否出现在起始位置或结束位置?是否会出现真正的重复,即具有
x,y
的两条记录?@ThorstenKettner:结果的一部分是(x,y)还是(y,x)并不重要。顺序不重要,是的,(x,y)仍然可以;)这就是我一直在寻找的!谢谢!