mysql – 查询从SQL中删除重复项

我在桌子上叫做距离.它有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.

并且大多数数据库兼容的情况.

上一篇:数控AGC实现(转)


下一篇:php – Mysql – 检查行是否存在