如何删除其外键为NULL的行?

Mah*_*ine 0 mysql foreign-keys

我有两个名字tab1和表tab2.

TAB1是P&rimary key is price并且price is foreign key in tab2,它是on delete set null.

当我primary key从tab2中存在的tab1中删除一个相应的外键

设置为NULL.

现在我想从tab2中删除其外键为null的行.

我写这个查询,但它不起作用.

delete from tab2 where price = null.
Run Code Online (Sandbox Code Playgroud)

请帮我解决一下.

Lie*_*ers 5

您无法使用=来比较NULL.您应该使用IS NULL,而不是

WHERE price IS NULL
Run Code Online (Sandbox Code Playgroud)

来自MySQL参考手册

在您习惯之前,NULL值可能会令人惊讶.从概念上讲,NULL表示"缺少未知值",并且与其他值的处理方式略有不同.要测试NULL,不能使用算术比较运算符,例如=,<或<>.

但是,如果您已经在使用on delete set null,为什么不简单地将其更改为on delete cascade并省去手动删除行的麻烦?