mysql一些好用的函数及注意事项

最近可谓非常忙,一个人15天负责多个大屏的输出,还是挺辛苦的。在开发过程,为了满足条件,提高效率,使用sql提供的函数,还是能节省很多java代码的。

函数字一:union

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

使用场景:查询两个相似表的数据(例如项目中有活动告警表和历史告警表,表结构一样,但存的数据性质却不一样),直接用这个函数字拼接返回一个list,比在代码中拼接list省事的多了。

但是要注意还很容易被忽略的一个问题是:UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。该对应的对应不起来,数据就会出现偏差,比如张三年龄18,你给整成身高18,显然不合理。

unionunion all的区别

两个函数都有连接的意思,不同点在于,union连接两个sql语句时,多sql的结果相同和不同的数据只返回一次,而union all是返回前一条语句执行的所有结果加后一条语句执行的所有结果,所以返回的数据是会重复的。
上查询示例:
表结构:test_p、test_c

union关联查询的结果

union all关联查询的结果

这俩关键字的另一用法则可以查出多表的全集数据,和其他数据库的full join函数一样效果
众所周知mysql没有全连接full join函数的,所以想要返回两张表的所有数据,可以使用左连接加右链接然后使用union all函数关联两条sql的结果得到最终集。

函数字二:coalesce

查数据这真是个常用且超级好用的函数

返回参数中的第一个非空表达式(从左向右)

使用场景:在查询数据返回给前端时,某一项为空就可以用它进行判断返回固定的值给前端,可以让前端友好的显示,不显示null或者报错。
使用示例:select coalesce(cpu_num,0) from xxx,这个sql的意思是查询cpu核数,为空时返回0
不仅可以设置返回一个默认值,也可以多个进行选择出一个不为空的,例如coalesce(username,english_name,nick_name,'no name'):当用户名为空时,首先返回英文名,英文名也为空就返回昵称,昵称也为空则就显示no name了

这个函数和ifnull差不多,但是ifnull只能返回一个默认值。例:ifnull(age,0)


不定期持续更新…


-------------本文结束感谢您的阅读-------------
感觉文章不错,就赏个吧!
0%