您可以使用以下查詢來查找重複項:
SELECT LEAST(start_from, end_to) AS start_from,
GREATEST(start_from, end_to) AS end_to,
distance
FROM mytable
GROUP BY LEAST(start_from, end_to), GREATEST(start_from, end_to), distance
HAVING COUNT(*) > 1
輸出:
start_from, end_to, distance
--------------------------------
Bangalore, Chennai, 350
現在你可以使用上面的查詢作爲派生表過濾掉重複:
SELECT t1.*
FROM mytable AS t1
LEFT JOIN (
SELECT LEAST(start_from, end_to) AS start_from,
GREATEST(start_from, end_to) AS end_to,
distance
FROM mytable
GROUP BY LEAST(start_from, end_to), GREATEST(start_from, end_to), distance
HAVING COUNT(*) > 1
) AS t2 ON t1.start_from = t2.start_from AND
t1.end_to = t2.end_to AND
t1.distance = t2.distance
WHERE t2.start_from IS NULL
的WHERE
從句謂語,t2.start_from IS NULL
,過濾掉重複記錄。
輸出:
start_from end_to distance
--------------------------------
Chennai Bangalore 350
Chennai Hyderabad 500
Hyderabad Chennai 510
請分享確切的期望輸出。字段值可能會重複,但根據要求,我們需要重寫查詢或重新設計表格。 –
@SaurabhJhunjhunwala添加了所需的輸出。我無法改變桌子。 – shiva
爲什麼你要**欽奈** **班加羅爾**,而不是**班加羅爾** **欽奈**?如果** Chennai **到** Hyderabad **也是350,那麼您會想要什麼? – Blank