用shell把执行的两条sql语句相加并输出数据库名和相加的值以tab健隔开
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,SELECT SUM(PresentSum) FROM `Lg_ConsumeDetail0` WHERE ConsumeDate < '2016-11-01' AND OpId != 300;+SE
千家信息网最后更新 2025年11月08日用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安全错误
数据库的锁怎样保障安全
脏小豆解说骗赞服务器01
学生信息系统数据库
重庆GIS软件开发公司
alpine安装数据库
mintel数据库
俄军通信网络安全
密云区环保软件开发调试
一站式网络技术信息推荐
成都成华区互创软件开发公司
华为服务器从u盘启动
广州欧酷网络技术有限公司
冷水服务器
废物利用服务器硬盘
蚌埠网络安全工程师
美国网络中立法案与网络安全
数据库服务器周报
崇尚互联网科技
制造业erp软件开发
asp或bsp数据库
单位服务器做一个简易访问网站
网络安全进校园的好词好句
七彩科技互联网公司
学生网络安全守则是啥
服务器主板结构
国家网络安全防护团队
服务器写php
公共网络安全启示和建议
服务器神域
七零三网络技术有限公司
pb连oracle数据库