【原创】sql:慎用【数字字段1 - 数字字段2】这样的sql(10-null = null)mysql
2023-09-11 14:19:52 时间
如果只有一个表的情况下
a表:
id num1,num2
1 10 5
2 10 0
3 20 0
select id, num1,num2,num1 - num2 AS subNum from a;
这种情况下:
结果如下:
id num1 num2 subNum
1 10 5 5
2 10 0 10
3 20 0 20
单表情况下,这样在sql中,使用减号“-”是没有问题的(数字字段,必须不能为null),如果有字段为null,那么减之后的结果也为null,例:10 - null = null
但是如果是2张以上的表进行关联,即使每个表的字段都不为null,但是,左关联,右表中的记录如果没有,则为null
表b:
id num3
1 5
3 0
select a.id, b.id, a.num1, b.num3, a.num1 - num3 AS subNum from a a
left join b b on a.id=b.id
结果:
id id num1 num3 subNum
1 1 10 5 5
2 null 10 null null
以上,原本我需要的是id=2的时候,subNum = 10,结果是null了。
此时使用左连接,就不能使用减了,就要在程序里面处理了。
相关文章
- mysql格式化日期
- MySQL提示:The server quit without updating PID file(…)失败
- 【MySQL】一次修改mysql 默认路径的经历
- Mysql: 强制走索引:mysql between 日期索引 索引问题-日期索引使用
- [SQL] sql server中如何查看执行效率不高的语句
- mysql通过SOURCE导入SQL时报错处理
- mysql审计插件-记录所有sql语句
- 【问题解决方案】MySQL安装后无法启动-net start mysql服务名无效
- Ubuntu安装MySQL
- MySQL中的char和varchar&mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
- MySQL事务隔离级别理解_解读MYSQL的可重复读、幻读及实现原理
- Mysql中联合索引的最左匹配原则(百度)
- mysql 得到重复的记录
- Sql:成功解决将sql输出的datetime时间格式转为常规格式
- Mysql连接报错:1130-host ... is not allowed to connect to this MySql server如何处理
- MySQL 可以用localhost 连接,但不能用IP连接的问题,局域网192.168.*.* 无法连接mysql
- 007-docker-安装-mysql:5.6
- [MySQL] 解决办法: Error: Transaction test error: file /etc/my.cnf from install of mysql-community-server
- Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
- mysql_10 _ MySQL为什么有时候会选错索引?
- mysql case when
- 1.3 用navicat连接mysql数据库、新建数据库、还原数据库