我正在制作一個交通應用程式,現在,我正在實施 SQL 并撰寫一些查詢。
我有一個表 Train(From, To),它基本上是一個有兩列的表。第一列是您開始的城市,下一列是您到達的城市。
我的問題是如何從某個城市遞回檢索您可以前往的所有城市?例如,這是一個示例資料集:
| 從 | 到 |
|---|---|
| 圣路易斯 | 杰斐遜城 |
| 杰斐遜城 | 柯克伍德 |
| 芝加哥 | 圣路易斯 |
| 柯克伍德 | 貝爾維爾 |
所以如果我將 St. Louis 傳入這個遞回函式,我會得到 Jefferson City、Kirkwood 和 Belleville 作為可達城市。
SQL 語言是 Postgres/Sqlite :)
uj5u.com熱心網友回復:
使用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 中測驗)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340195.html
標籤:sql PostgreSQL sqlite 递归 递归查询
