sql运算-值为null时
问题:当运算时,如果有任意一个值为null,那么返回的结果就为null
解决办法:使用mybatis时,xml在给实体类赋值的时候可以使用IFNULL对null进行处理,赋值为0
语法:IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
扩展:ISNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。
sql-左外连接
语法:SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
含义:返回table1的所有字段,table2的字段如果在table1中没有匹配则为null;ON后面为table1和table2的连接条件
注意:需要小表驱动大表(小数据量时不易发现,数据量大了就会出现慢SQL)
添加唯一索引
语法:ALTER TABLE table_name ADD UNIQUE (列名)
含义:为table_name添加一个索引,字段为列名
tips:可以使用多个字段列名,
MyBatis自动操作
问题:当前端传0,或进入xml时传值有0时,mybatis会将0当做空字符串进行比较。
导致:< if >标签判断空指针出现混乱。
解决:当有0时只判断非null即可。
GROUP BY操作需慎用
问题:GROUP BY分组操作对数据的去重等操作时很方便,但是!这个操作去掉的可能是你想要的数据之一。
导致:最终SQL运行出来的结果和你想要的结果不一样。
解决:提高分组的精确度(使用多个分组条件)