mysql相加并输出_用shell把执行的两条sql语句相加并输出数据库名和相加的值以tab健隔开...

该Shell脚本用于连接MySQL数据库,对不同数据库中的`Lg_ConsumeDetail0`和`Lg_ConsumeDetail1`表进行`BasicSum`字段的求和操作。当某一表不存在或返回NULL时,会切换到另一表进行求和。最终按数据库名和求和结果以制表符分隔输出。
摘要由CSDN通过智能技术生成

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/bash

USER='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_yy

do

table1=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail0 WHERE ConsumeDate 

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 

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 

continue

fi

table3=$(mysql -u$USER -p$PASSWD -h$IP $i -e "SELECT SUM(BasicSum) FROM Lg_ConsumeDetail1 WHERE ConsumeDate 

#判断表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 

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 

continue

fi

#上面判断都不存的话,就把表0和表1的值相加输出

expr $table1 + $table3  | awk -vb=$i '{print b"\t"$1}'

done

执行结果如下:[root@10-9-181-186 opt]# sh sql_sum.sh

tzpay   69768460

tzpay360        23185990

tzpay_179       1259110

tzpay_9377      57750

tzpay_dx2       32938190

tzpay_dx3       33270350

tzpay_dx4       12540690

tzpay_dx5       13220880

tzpay_dx6       NULL

tzpay_lt1       33962100

tzpay_lt2       23586690

tzpay_lt3       10345880

tzpay_lt4       NULL

tzpay_yy        NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值