我在 table 上叫距离。它有4列。 id,start_from,end_to 和距离。
我有一些重复的记录。从某种意义上说,记录是重复的,
start_from | end_to | distance
Chennai Bangalore 350
Bangalore Chennai 350
Chennai Hyderabad 500
Hyderabad Chennai 510
在上表中, chennai到bangalore 和 bangalore到chennai 都具有相同距离。因此,我需要查询以删除上的该记录,选择。
我想要一个像
start_from | end_to | distance
Chennai Bangalore 350
Chennai Hyderabad 500
Hyderabad Chennai 510
最佳答案
如果Chennai to Bangalore
或Bangalore to 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。
即使
Chennai to Hyderabad
是350,也可以使用demo。如果您希望保留
Bangalore to Chennai
,则只需更改max
和min
的位置即可: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/