能否在同一查询中混合使用SQL Server图表与非图表?
如何在SQL Server中直接混合图模型与传统关系模型查询
可以直接在单个查询中混合图模型与传统关系模型的操作,无需借助临时表中转——这完全符合微软官方文档中“跨图数据和关系数据进行查询”的描述。
直接混合查询的示例写法
针对你提到的好友关系查询场景,无需将图查询结果存入临时表,可直接将图遍历逻辑与传统关系表关联:
SELECT Person1.[name] AS UserName, Person2.[name] AS Friend, s.* FROM Person AS Person1, friendOf, Person AS Person2 INNER JOIN [SomeOtherRdbTable] s ON s.FirstName = Person1.[name] WHERE MATCH(Person1-(friendOf)->Person2)
再以你最初的Person-LivesIn-City图模型为例,关联一个传统的员工信息表(如Employee):
SELECT p.[name] AS PersonName, c.[name] AS CityName, e.Department, e.HireDate FROM Person p, LivesIn li, City c INNER JOIN Employee e ON e.FirstName = p.[name] WHERE MATCH(p-(li)->c)
写法说明
- 保留
MATCH子句处理图模型的节点与边关系遍历,这是图查询的核心逻辑; - 使用常规的
INNER JOIN(或其他JOIN类型)直接将图节点表(如Person)与传统关系表关联,关联条件基于双方的业务字段(如姓名、ID等); - SQL Server的查询引擎会自动处理图数据与关系数据的执行路径整合,无需手动拆分逻辑。
这种写法既保留了图模型在处理复杂关系(如社交网络、组织架构)上的优势,又能直接复用遗留系统中的关系表数据,避免数据冗余,比临时表中转的方式更简洁高效。
内容的提问来源于stack exchange,提问作者Roger Hill
相关产品推荐
相关产品推荐

