用shell把执行的两条sql语句相加并输出数据库名和相加的值以tab健隔开
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail0` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;+SE
千家信息网最后更新 2025年01月31日用shell把执行的两条sql语句相加并输出数据库名和相加的值以tab健隔开
SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail0` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;
+
SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail1` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;
每次返回的是+号上下两句sql查询的和。
注意,有可能其中一句sql返回的是NULL或者报错信息(没有这个表)。
格试如下:
输出结果
数据库名1 sql1+sql2的和
数据库名2 sql1+sql2的和
数据库名3 sql1+sql2的和
... ...
中间要以tab健隔开
代码如下:
#!/bin/bashUSER='root'PASSWD='123456'IP='192.168.1.1'for i in tzpay tzpay360 tzpay_179 tzpay_9377 tzpay_dx2 tzpay_dx3 tzpay_dx4 tzpay_dx5 tzpay_dx6 tzpay_lt1 tzpay_lt2 tzpay_lt3 tzpay_lt4 tzpay_yydo table1=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print $1}') table4=$(mysql -u$USER -p$PASSWD -h$IP $i -e 'show tables like "Lg_ConsumeDetail0"' | wc -l) #判断存不存在表0,不存在则打印表1的值,跳过本次循环 if [ $table4 -eq 0 ];then mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print b"\t"$1}' continue fi table2=$(mysql -u$USER -p$PASSWD -h$IP $i -e 'show tables like "Lg_ConsumeDetail1"' | wc -l) #判断存不存在表1,不存在则打印表0的值,跳过本次循环 if [ $table2 -eq 0 ];then mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk -vb=$i '{print b"\t"$1}' continue fi table3=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print $1}') #判断表1和表0同时为NULL的话,则直接输出NULL,跳过本次循环 if [ $table3 == "NULL" ] && [ $table1 == "NULL" ];then echo NULL | awk -vb=$i '{print b"\t"$1}' continue fi #判断表1为NULL的话,则直接输出表0的值,跳过本次循环 if [ $table3 == "NULL" ];then mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk -vb=$i '{print b"\t"$1}' continue fi #判断表0为NULL的话,则直接输出表1的值,跳过本次循环 if [ $table1 == "NULL" ];then mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate < '2016-11-01' AND OpId = 300;" | tail -1 | awk '{print b"\t"$1}' continue fi #上面判断都不存的话,就把表0和表1的值相加输出 expr $table1 + $table3 | awk -vb=$i '{print b"\t"$1}' done
执行结果如下:
[root@10-9-181-186 opt]# sh sql_sum.shtzpay 69768460tzpay360 23185990tzpay_179 1259110tzpay_9377 57750tzpay_dx2 32938190tzpay_dx3 33270350tzpay_dx4 12540690tzpay_dx5 13220880tzpay_dx6 NULLtzpay_lt1 33962100tzpay_lt2 23586690tzpay_lt3 10345880tzpay_lt4 NULLtzpay_yy NULL
输出
循环
数据
数据库
结果
上下
代码
信息
同时
查询
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
栖霞游戏软件开发公司电话
软件开发中的系统流程图
网络工程师与软件开发师
电厂网络安全等级保护方案
服务器主板amd内存
服务器安全配置的用途
网络安全员培训题库
图乐软件开发公司
福建智能软件开发价钱
平顶山阜阳app软件开发
有名的软件开发工程师
哪个数据库提供职称评审下载
蒲公英组网访问公司服务器
数据库名字怎么设置
信源豆豆登录显示服务器禁止注册
路透数据库
忘记服务器时出现问题
互联网科技行业的分类
特来电软件开发岗
北京职业软件开发erp
前端操作数据库用什么语言
数据库 键与数据
小猪视频软件开发
惠普机架式服务器紧急维修
个人保险支出统计数据库
淮猫网络技术有限公司 主播
大智财务报表数据库代码
软件开发美工师
ci框架 数据库操作
魔兽私服数据库软件