0

我想在数据库中查询没有关系(即外键)的节点。我尝试了这个加入声明,但它没有用

SELECT nodes.*, relationships.* FROM nodes inner JOIN relationships ON nodes.id = null;

如何只显示没有关系的节点?谢谢你

nodes                 Relationships                      
-----                 -------------
id int(11),           id int(11),
name varchar(35),     to int(11), //this is the destination node from the id relation 
color varchar(7),     data varchar(0) null
type varchar (12),    Foreign key (id) references nodes(id)
Primary key (id)       

engine = innodb    
4

2 回答 2

2

您的问题是您必须在带有连接的语句中ON nodes.id = null使用列名。ON如果你想设置nodes.id = null,使用它where

SELECT 
    nodes.*
FROM 
    nodes left JOIN relationships ON nodes.id = Relationships.id
where
    Relationships.id is null;
于 2013-03-29T08:58:37.817 回答
0
SELECT * FROM nodes WHERE id NOT IN (SELECT `to` from Relationships);

这将返回关系表中没有 id 的节点

最佳实践也是在您的数据库中仅使用小写字母,因为某些数据库区分大小写,而另一些则不区分大小写。

于 2013-03-29T08:59:10.350 回答