首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL语句left join where子项为null或

相关·内容

SQL语句left join 后用 on 还是 where,区别大了!

前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。...在使用left join时,on 和 where 条件的区别如下: on条件是在生成临时表时使用的条件,它不管on中的条件是否真,都会返回左边表中的记录。...where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。...tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ select * form tab1 left join tab2...其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否真都会返回leftright表中的记录,full则具有left和right的特性的并集

1.1K10

SQL语句left join 后用 on 还是 where,区别大了!

前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。...s left join class c on s.classId=c.id and c.name="三年级三班" order by s.id 数据库在通过连接两张多张表来返回记录时,都会生成一张中间的临时表...在使用left join时,on 和 where 条件的区别如下: on条件是在生成临时表时使用的条件,它不管on中的条件是否真,都会返回左边表中的记录。...tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ select * form tab1 left join tab2...) 其实以上结果的关键原因就是left join,right join,full join的特殊性,不管on上的条件是否真都会返回leftright表中的记录,full则具有left和right的特性的并集

43120

SQL中关于Join、Inner JoinLeft Join、Right Join、Full Join、On、 Where区别

前言:   今天主要的内容是要讲解SQL中关于Join、Inner JoinLeft Join、Right Join、Full Join、On、 Where区别和用法,不用我说其实前面的这些基本SQL...Join(where联立查询): 概念:用于两表多表之间数据联立查询 select * from Students s,Class c where s.ClassId=c.ClassId ?...Inner Join(内连接查询): 概念:与Join相同,两表多表之间联立查询数据,因此我们在使用多表join查询的时候既可以使用where关联,也可以是inner join关联查询 select...Left Join(左连接查询): 概念:以左表中的数据为主,即使与右表中的数据不匹配也会把左表中的所有数据返回 select * from Students s left join Class c...Where的用法就不描述了因为这个咱们用的都比较多,下面说明一下两者的概念问题: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否真,都会返回左边表中的记录(以左连接例)。

2.5K20

sql语句中的left join,right join,inner join的区别

join sql语句如下: select * from A left join B on A.aID = B.bID 结果如下: aID     aNum     bID     bName...     NULL (所影响的行数 5 行) 结果说明: left join是以A表的记录基础的,A可以看成左表,B可以看成右表,left join是以左表为准的....B表记录不足的地方均为NULL. -------------------------------------------- 2.right join sql语句如下: select * from...     NULL     8     2006032408 (所影响的行数 5 行) 结果说明: 仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)基础的,A表不足的地方用...NULL填充. -------------------------------------------- 3.inner join sql语句如下: select * from A innerjoin

1.1K60

SQL语句进行left join时导致的索引失效案例

wt1utf8,wt2utf8mb4。但是为什么表字符集不一样(实际是字段字符集不一样)就会导致wt1全表扫描呢?...下面来做分析: (1)首先wt2 left join t1决定了wt2是驱动表,这一步相当于执行了select * from wt2 where wt2.name = ‘dddd’,取出code字段的值...,这里’4b3d8e5024e2352a118d31c504f9d560’; (2)然后拿wt2查到的code的值根据join条件去wt1里面查找,这一步就相当于执行了select * from wt1...`name` = 'dddd') 1 row in set (0.00 sec) 4、注意点 (1)表字符集不同时,可能导致joinSQL使用不到索引,引起严重的性能问题; (2)SQL上线前要做好...5、问题讨论 最后问一个问题,假设现在wt1和wt2表的字符集还未修改,如果上面那个问题SQL换一下left join表的位置(即把wt2 left join wt1换成wt1 left join wt2

4.5K20

SQL - where条件里的!=会过滤值null的数据

=会过滤值null的数据 在测试数据时忽然发现,使用如下的SQL是无法查询到对应columnnull的数据的: 1 select * from test where name !...= 'Lewis'; 本意是想把表里name的值不为Lewis的所有数据都搜索出来,结果发现这样写无法把name的值null的数据也包括进来。 上面的!...=换成也是一样的结果,这可能是因为在数据库里null是一个特殊值,有自己的判断标准,如果想要把null的数据也一起搜索出来,需要额外加上条件,如下: 1 select * from test where...null值的比较 这里另外说下SQLnull值的比较,任何与null值的比较结果,最后都会变成null,以PostgreSQL例,如下: 1 2 3 4 select null !...参考链接 Sql 中 不等于'‘与 NULL 警告 本文最后更新于 November 12, 2019,文中内容可能已过时,请谨慎使用。

1.9K40
领券