sub1和sub2都与super有一对一的关系。
我希望确定对于给定的超级记录,它们中的任何一个是否存在联接。
下面两个查询应该会产生我想要的结果。是否有任何理由使用!ISNULL()而不是IS NOT NULL?
SELECT super.*
FROM super
LEFT OUTER JOIN sub1 ON super.id=sub1.super_id
LEFT OUTER JOIN sub2 ON super.id=sub2.super_id
WHERE (!ISNULL(sub1.id) OR !ISNULL(sub2.id)) AND super.id=123;
SELECT super.*
FROM super
LEFT OUTER JOIN sub1 ON super.id=sub1.super_id
LEFT OUTER JOIN sub2 ON super.id=sub2.super_id
WHERE (sub1.id IS NOT NULL OR sub2.id IS NOT NULL) AND super.id=123;发布于 2013-02-19 21:36:08
使用您的第二个选择(IS NOT NULL)。查询优化器可能不能帮助您提高第二个查询的效率。但是查询优化器不执行函数。它假设它必须为所有可能的行和列计算您给出的任何函数;它不会尝试推断函数的含义。
https://stackoverflow.com/questions/14958762
复制相似问题