LEFT JOIN 时 筛选条件写在 ON 后面还是 WHERE 和后面 | 您所在的位置:网站首页 › 筛选条件写在什么前面 › LEFT JOIN 时 筛选条件写在 ON 后面还是 WHERE 和后面 |
在我们写SQL的时候我们经常会使用到 LEFT JOIN ,那么在我们使用的时候总是要对表做一些筛选条件,那么我们的筛选条件是写在 ON 后面,还是写在WHERE后面呢?下面让我们来写一个例子测试一下。 首先我们先建两张表,student表和home表,表结构如下: student表: home表: 两个表主要是通过id来关联。 现在我们需要做的一个查询操作是联查两张表,找到住址是深圳的学生学习,返回的字段有学生表的所有信息以及住址表的地址。 编写的SQL如下,下面我们分别提通过将筛选条件放在 ON 后面和WHERE后面来看看到底两者返回的数据都是怎么样的。 放在 ON 后面的SQL: SELECT t1.*, t2.address FROM student t1 LEFT JOIN home t2 ON t1.id = t2.id AND t2.address = '深圳' 运行结果是如下图: 放在 WHERE 后面的SQL是: SELECT t1.*, t2.address FROM student t1 LEFT JOIN home t2 ON t1.id = t2.id WHERE t2.address = '深圳' 运行结果如下: 通过这两个对比我们可以看到很明显第二个才是符合我们需求的那一个SQL。 由于LEFT JOIN 是以左表为主表,匹配在右表中匹配,匹配到的就会在左表的基础上加上右表中你选定的字段,但是没有匹配到的话就会返回 null,此时由于筛选条件在 ON 后面,筛选完了再做LEFT JOIN的匹配,自然会出现第一种的情况。 而第二种的情况下则是左表和右表先做 LEFTJOIN的匹配,在做完这个的匹配时出现的数据如下图: 此时再去执行 WHERE 后面的筛选条件,,自然就会出现我们期望得到的结果。 |
CopyRight 2018-2019 实验室设备网 版权所有 |