📅  最后修改于: 2023-12-03 15:25:02.059000             🧑  作者: Mango
在使用 SQL 查询图数据库时,有时需要针对某个顶点的子记录进行查询。这时候可以使用 WHERE 子句来筛选子记录。
使用 WHERE 子句进行子记录筛选的语法是这样的:
SELECT * FROM VertexLabel WHERE id IN (
SELECT outV FROM EdgeLabel WHERE propertyName = 'value'
);
其中,VertexLabel
和 EdgeLabel
分别是顶点和边的标签,id
是顶点的属性,outV
是边出发的顶点属性,propertyName
是边的属性。
这个语句的意思是:查询 VertexLabel
中所有 id
属性值在某个 EdgeLabel
中的出发顶点 outV
中出现过的顶点。
假设我们有这样一张图:
john -likes-> pizza
john -likes-> ice_cream
mary -likes-> pizza
mary -likes-> salad
我们可以使用下面的语句来查询喜欢披萨的人:
SELECT * FROM Person WHERE id IN (
SELECT outV FROM Likes WHERE value = 'pizza'
);
这个语句的意思是:查询 Person
中所有 id
属性值在 Likes
中 value
属性为 'pizza'
的边中出发的顶点 outV
中出现过的人。结果会返回 john
和 mary
。
使用 WHERE 子句可以针对子记录进行查询,这在图数据库中非常方便。需要注意语句中的标签、属性和属性值的对应关系,以及子查询语句的写法。