我正在使用 Gephi , 连接到 MySQL 数据库。有两个表:
Nodes
**id | label**
----------------
1 | a
2 | b
3 | c
4 | d
Edges
**source | target**
----------------
4 | 3
1 | 2
2 | 3
3 | 1
2 | 1
2 | 4
source
和target
(边表)的值应该对应于id
(节点表)。我希望一个查询:
- 从
label
为b
的节点表中选择。 id
为2
,因此从source
为的 Edges 表中选择这些值2
.- 现在
target
值为3, 1, 4
其中source
为2
,因此从中选择这些值id
为3, 1, 4
的节点表。
b
的 我试过这个查询,但没有给出正确的结果:
SELECT id, label FROM nodes WHERE id IN(
SELECT target FROM edges WHERE target In(
SELECT id FROM nodes WHERE label = 'b'
)
)
结果应该是这样的:
**id | label**
----------------
2 | b
3 | c
1 | a
4 | d
最佳答案
只需将节点表与边缘表连接两次,如下所示:
SELECT distinct n2.*
FROM nodes n1
JOIN edges e on n1.id = e.source
JOIN nodes n2 on n2.id in (e.source, e.target)
WHERE n1.label = 'b'
演示 @ SQLFiddle
关于mysql - 根据第二个表中的值进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802902/