检查原始表中是否存在外键是否有意义?

时间:2019-04-10 08:27:30

标签: mysql

我遇到了一些我不会那样写的代码。但是,我不认为自己是MYSQL专家,所以我想知道自己是否缺少什么。

为了更好的理解:仅当表s.SpecialIDs中有外键时,我才希望从该查询中获取otherTable。 代码是

SELECT Distinct s.SpecialID
FROM sample s, otherTable o
WHERE s.otherTableID = o.id 

我会这样写的

SELECT Distinct s.SpecialID
FROM sample s
IF s.otherTableID IS NOT NULL

1 个答案:

答案 0 :(得分:1)

如果您使用的是InnoDB,并且实际上已经在表模式中声明了外键关系,那么就不必测试外键是否存在。 MySQL将自动执行此要求。第二个版本应该是等效的,因为主表中应该存在任何非null值。

但是,如果您使用的是MyISAM,则不会自动强制执行外键约束。在这种情况下,可能有必要通过联接显式执行测试。