我有一张航班表,其中有一个出发地和目的地城市,表示为外国 ID。
此表的一个非常简化的示例如下所示:
id | origin | destination
023 1 3
044 3 2
332 2 1
509 1 3
493 1 4
我需要第一次看到一个城市作为起点或终点出现;包含尚未飞往或离开的城市的所有航班的列表。
对于上面的例子,我想得到的是:
023: 1, 3
044: 2
493: 4
332 和 509 航班不在输出中,因为它们只访问已经访问过的城市。
这是我尝试过的:
(SELECT distinct(origin), distinct(destination) FROM flights ORDER BY id)
不起作用,因为您不能选择多个不同的列
SELECT (distinct(origin) FROM flights ORDER BY id) UNION (distinct (destination) FROM flights ORDER BY id)
由于语法错误而不起作用,但主要是因为它没有考虑到城市在起点和终点列中应该是唯一的。
如果在 SQL 中没有快速的方法来执行此操作,我也很乐意迭代并跟踪已访问过的城市(这个应用程序实际上只有一个用户,他不关心几毫秒的计算,因为他已经 80 多岁了),但我很想知道,这样我就可以了解更多关于 SQL 的知识!