我在桌子上叫做距离.它有4列. id,start_from,end_to和distance.
我有一些重复的记录.在这个意义上重复记录,
start_from | end_to | distance
Chennai Bangalore 350
Bangalore Chennai 350
Chennai Hyderabad 500
Hyderabad Chennai 510
在上表中,钦奈到班加罗尔和班加罗尔与钦奈都有相同的距离.所以我需要查询在select上删除该记录.
我想要一个外出的东西
start_from | end_to | distance
Chennai Bangalore 350
Chennai Hyderabad 500
Hyderabad Chennai 510
解决方法:
如果Chennai到Bangalore或Bangalore到Chennai没有区别,您可以试试这个:
select
max(`start_from`) as `start_from`,
min(`end_to`) as `end_to`,
`distance`
from yourtable
group by
case when `start_from` > `end_to` then `end_to` else `start_from` end,
case when `start_from` > `end_to` then `start_from` else `end_to` end,
`distance`
这是rextester中的demo.
即使钦奈到海德拉巴也是350也工作demo.
如果你想让班加罗尔留在金奈,你可以改变最大和最小的位置:
select
min(`start_from`) as `start_from`,
max(`end_to`) as `end_to`,
`distance`
from yourtable
group by
case when `start_from` > `end_to` then `end_to` else `start_from` end,
case when `start_from` > `end_to` then `start_from` else `end_to` end,
`distance`
也是demo.
并且大多数数据库兼容的情况.