MYSQL SELECT在FK字段上没有返回NULL值

时间:2015-12-14 12:31:11

标签: mysql database null tree foreign-keys

我正在尝试使用外键使用数据库创建某种树。所以,有一个例子:

CREATE TABLE tree (
   id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
   pid INT(11) UNSIGNED NULL DEFAULT NULL,
   title VARCHAR(255) NOT NULL,
   PRIMARY KEY (id),
   CONSTRAINT TheTree FOREIGN KEY (pid) REFERENCES tree (id) ON UPDATE NO ACTION ON DELETE CASCADE
) ENGINE=InnoDB;

#insert sample data with 2 root nodes and 2 subnodes
insert into tree (id, pid, title) values 
     (null, null, 'test title 1'), 
     (null, null, 'test title 2'), 
     (null, 1,    'test title 1-1'), 
     (null, 2,    'test title 2-1');


select * from tree where pid = null
# it returns nothing.

这里以sqlFiddle为例。 我只是没有得到它。为什么我无法使用NULL值获取根节点?我该怎么办?

1 个答案:

答案 0 :(得分:3)

您必须使用is null代替= null

select * from tree where pid is null