gpt4 book ai didi

mysql - 查询以从 SQL 中删除重复项

转载 作者:可可西里 更新时间:2023-11-01 07:05:54 25 4
gpt4 key购买 nike

我在 table 上有一个叫做距离的表格。它有 4 列。 id、start_from、end_to距离

我有一些重复的记录。某种意义上的重复记录,

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 到 BangaloreBangalore 到 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`

这是一个demo在 rextester 中。

即使 Chennai to Hyderabad 是 350 也有效 demo .

如果你想保留Bangalore to Chennai,你可以改变maxmin的位置:

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 .

case when 将与大多数数据库兼容。

关于mysql - 查询以从 SQL 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43650296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com