SQL :如何获取ORDER BY的route信息?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

IK有一个具有随机顺序的路由信息的表,如下所示:

from    to      street
----------------------------------
92      91      Lange Poten
100     104     Bagijnestraat
85      79      Korte Poten
91      85      Plein
79      100     Bezuidenhoutseweg

我试图找到一种方法来使用路由信息对其进行排序,其中当前行的列与下一行的列。在这个例子中,我想要的顺序是:

from    to      street
----------------------------------
92      91      Lange Poten
91      85      Plein
85      79      Korte Poten
79      100     Bezuidenhoutseweg
100     104     Bagijnestraat

但不起作用,因为数字顺序不是正确的。我正在尝试使用SQL或Excel找到一种方法。

提问于
用户回答回答于

oracle

select a.*
from route  a
start with a.rowid = (select min(rowid) from route )
connect by prior a.t = a.f; 
用户回答回答于

SQLServer(2005+):

Declare @Routes Table([from] int, [to] int, [street] varchar(17))   
INSERT INTO @Routes VALUES
(92, 91, 'Lange Poten'),
(100, 104, 'Bagijnestraat'),
(85, 79, 'Korte Poten'),
(91, 85, 'Plein'),
(79, 100, 'Bezuidenhoutseweg')

;With  Cte AS
(
    SELECT  [from]
            ,[to]
            ,[street]
    FROM    @Routes
    WHERE   [from] = 92
    UNION ALL
    SELECT  r.[from]
            ,r.[to]
            ,r. [street]
FROM    @Routes AS r
JOIN    Cte c
ON      c.[to] = r.[from]
)

Select * From Cte

扫码关注云+社区