我有一个乘客识别器,他们的出发和到达目的地的航空公司的表。跨两列识别相同的对
+-------------+-----------+----------+
| PassengerID | Town_from | Town_to |
+-------------+-----------+----------+
| 1 | London | Valetta |
| 1 | Valetta | London |
| 1 | Bangkok | Hanoi |
| 2 | Prague | Vienna |
| 2 | Vienna | Prague |
| 3 | Budapest | Vilnius |
| 4 | Moscow | Helsinki |
| 4 | Helsinki | Moscow |
| 4 | Moscow | Helsinki |
| 5 | Lyon | Paris |
| 5 | New York | Toronto |
+-------------+-----------+---------+
我想要做的是找到谁做只是一个路线那里来回的旅客所以结果应该是这样的:
+-------------+-----------+----------+
| PassengerID | Town_from | Town_to |
+-------------+-----------+----------+
| 2 | Prague | Vienna |
| 2 | Vienna | Prague |
| 4 | Moscow | Helsinki |
| 4 | Helsinki | Moscow |
| 4 | Moscow | Helsinki |
+-------------+-----------+---------+
或者这样:
+-------------+
| PassengerID |
+-------------+
| 2 |
| 4 |
+-------------+
为什么这个乘客ID:
1 - 没有,因为有1个回程和1个回报
2 - YES,因为仅存在1对
3 - NO,因为没有一个回程(芽 - VIL但不VIL - 芽)
4 - YES,因为还有1对虽然超过2个行程
5 - NO,因为没有回程这些对
我想是这样的:
SELECT PassengerID FROM table
GROUP BY PassengerID
HAVING COUNT(DISTINCT town_from) = 2 AND COUNT(DISTINCT town_to) = 2
但是,这也包括完全diferent目的地(ID 5)结果集。我无法弄清楚如何将两列进行分组。
是的,你说得对,对不起,我会虽然已经回答了更新的问题。 我解决的任务只需要一个从/来的ID即使是多次出行也是如此。我试图简化这个问题的数据,并忘记了这一点。 – Musisak