如何在JOIN查询中筛选共享列值为'xyz'的关联结果?
优化JOIN查询以筛选特定关联值
你可以直接在查询中加入条件过滤,不用先获取全部结果再后续筛选,有两种常用的简便方式:
在JOIN的ON子句中添加条件:
逻辑上更直接,表明只关联列值为'xyz'的行,代码示例:SELECT t1.c2, t2.c3 FROM t1 INNER JOIN t2 ON t1.c3 = t2.c4 AND t1.c3 = 'xyz'因为
t1.c3和t2.c4已经通过JOIN关联相等,所以只要限定其中一个等于'xyz',另一个自然匹配;你也可以写成AND t2.c4 = 'xyz',效果完全一致。使用WHERE子句过滤:
先完成表关联,再统一筛选符合条件的结果,适合习惯将过滤条件集中在WHERE中的场景:SELECT t1.c2, t2.c3 FROM t1 INNER JOIN t2 ON t1.c3 = t2.c4 WHERE t1.c3 = 'xyz'
这两种方式都能直接返回t1.c3与t2.c4均为'xyz'的关联数据,无需额外遍历筛选,效率更高。
内容的提问来源于stack exchange,提问作者MrCycling
相关产品推荐
相关产品推荐

