我遇到了一些我不会那样写的代码。但是,我不认为自己是MYSQL专家,所以我想知道自己是否缺少什么。
为了更好的理解:仅当表s.SpecialID
到s
中有外键时,我才希望从该查询中获取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
答案 0 :(得分:1)
如果您使用的是InnoDB,并且实际上已经在表模式中声明了外键关系,那么就不必测试外键是否存在。 MySQL将自动执行此要求。第二个版本应该是等效的,因为主表中应该存在任何非null值。
但是,如果您使用的是MyISAM,则不会自动强制执行外键约束。在这种情况下,可能有必要通过联接显式执行测试。