SQL Server 用 graph table 如何写 recursive query
SQL 从 2017开始支持 graph table, 想请教如何写 recursive query?
实例如下:
CREATE TABLE Person (
ID INTEGER PRIMARY KEY,
name VARCHAR(100)
) ;
CREATE TABLE friendOf AS EDGE;
INSERT INTO Person (Id, name)
VALUES (1, 'John')
, (2, 'Mary')
, (3, 'Alice')
, (4, 'Jacob')
, (5, 'Julie');
INSERT INTO friendOf
VALUES ((SELECT $NODE_ID FROM Person WHERE ID = 1), (SELECT $NODE_ID FROM Person WHERE ID = 2))
, ((SELECT $NODE_ID FROM Person WHERE ID = 2), (SELECT $NODE_ID FROM Person WHERE ID = 3))
, ((SELECT $NODE_ID FROM Person WHERE ID = 3), (SELECT $NODE_ID FROM Person WHERE ID = 1))
, ((SELECT $NODE_ID FROM Person WHERE ID = 4), (SELECT $NODE_ID FROM Person WHERE ID = 2))
, ((SELECT $NODE_ID FROM Person WHERE ID = 5), (SELECT $NODE_ID FROM Person WHERE ID = 4));
查询 'John' 的朋友:
select p1.name, p2.name
from Person p1, friendOf f, Person p2
where match (p1-(f)->p2)
and p1.name = 'John'
但是如果我想查询所有的 'John' 的朋友, 一级朋友的朋友, ...
SQL 该如何写?
如果不用graph table 的话,是可以写recursive query的.
谢谢