如何递归检索可用的城镇?

How to recursively retrieve towns available?

我正在制作交通应用程序,现在,我正在实施 SQL 并编写一些查询。

我有一个 table Train(From, To),它基本上是一个有两列的 table。第一列是您出发的城市,下一列是您到达的城市。

我的问题是如何从某个城市递归检索所有可以去的城市?例如,这是一个示例数据集:

From To
St Louis Jefferson City
Jefferson City Kirkwood
Chicago St Louis
Kirkwood Belleville

因此,如果我将圣路易斯传入此递归函数,我会得到杰斐逊城、柯克伍德和贝尔维尔作为可到达的城市。

SQL 语言是 Postgres/Sqlite :)

使用WITH RECURSIVE:

WITH RECURSIVE
    c(t) AS (
        SELECT "to" FROM cities
            WHERE "from" = 'St Louis'
        UNION
        SELECT "to" FROM cities, c
            WHERE c.t = cities."from"
    )
SELECT t FROM c;

(在 sqlite3 中测试)。