📜  子记录顶点的 where 子句 - SQL (1)

📅  最后修改于: 2023-12-03 15:25:02.059000             🧑  作者: Mango

子记录顶点的 WHERE 子句 - SQL

在使用 SQL 查询图数据库时,有时需要针对某个顶点的子记录进行查询。这时候可以使用 WHERE 子句来筛选子记录。

语法

使用 WHERE 子句进行子记录筛选的语法是这样的:

SELECT * FROM VertexLabel WHERE id IN (
    SELECT outV FROM EdgeLabel WHERE propertyName = 'value'
);

其中,VertexLabelEdgeLabel 分别是顶点和边的标签,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 属性值在 Likesvalue 属性为 'pizza' 的边中出发的顶点 outV 中出现过的人。结果会返回 johnmary

总结

使用 WHERE 子句可以针对子记录进行查询,这在图数据库中非常方便。需要注意语句中的标签、属性和属性值的对应关系,以及子查询语句的写法。