前言
写SQL题经常用,遇到的在这里记录一下
1. join on 和 where 的条件区别
MySQL5.7 join 相关文档
1.1 用 left join 取代 right join
right join
和 left join
工作原理类似,为了保证写出的sql语句具有可移植性,建议用left join
取代 right join
。
1.2 相同点
在没有连接条件或过滤条件的情况下,以下两个语句的语义相同,都生成笛卡尔积
select * from a join on b; # 当且仅当是inner join 而不是其他连接
select * from a, b;
1.3 不同点
与ON
连用的条件也可以写在WHERE
子句中。通常,ON
子句用于指定如何联接表的条件,WHERE子句限制要在结果集中包括哪些行。
2. is null
MySQL5.7 IS NULL 相关文档
2.1 is null 可以走索引
2.2 避免使用 where 字段 = null
以NULL做where条件过滤时应该写 IS NULL;
WHERE ... IS NULL;