mysql 表与表之间的条件比对_Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据...

477107919abd717622642237bb412deb.png

引言

  在线上运维的过程中,遇到一个头疼的事情,有一些合作公司的数据直接从平台上down下来是一个excel,然后发到研发手里去数据库中核对是否存在,怎么办呢?一般死脑筋方法就是使用sql语句select * from tb_name where colume_name="xxx";去核对是否存在该记录,完了,完全陷入到非sql不可的坑了。
  在思考如何更好的去比对两堆类型相同的数据时,除了程序员用后端的方法(不管是sql还是写脚本、程序工具类),其实还可以跳出这个思维圈,本文就总结一下如何通过我们日常用到的excel来比对两个数据表,当然我们也要解决表数据转为excel的问题。

sql转excel

方式

  我们先要解决一个mysql数据库中的数据如何转出到excel中的问题。
  进入到sql命令行选择数据库后,执行:select * from tbl_name into outfile '/home/outfile/test.xls';

问题

  我们可能会遇到一个ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement的报错,这个时候可以使用show variables like '%secure%';查看:

mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name | Value |
+--------------------------+-----------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
3 rows in set (0.01 sec)

  所以,我们可以在不修改数据库的权限情况下,选择这个默认路径进行输出:select * from tbl_name into outfile '/var/lib/mysql-files/test.xls';
  mysql数据转为excel这个问题解决后,我们就可以安心去解决excel中如何比对两个不同表格中的数据。

表达式

  我们先来了解一下今天登场的主角:IF(COUNTIF())表达式。

分解

"T",
  1. IF():IF()是条件判断函数;
  2. COUNTIF():是统计函数,其中,Sheet1代表的是另一个表格的数据,A:A表示统计区域,A1表示A1单元格的内容。
  3. "T":可自定义引号内的文字,是if如果成立,则会在单元格中输出该自定义内容。
  4. "F":可自定义引号内的文字,是if如果不成立,则会在单元格中输出该自定义内容。

操作详解

场景说明

  假设Sheet1为参考数据,Sheet2为需要比对的数据。比对Sheet2中是否在Sheet2中有相同的数据。916e234952dbfe18ae3a9f44f84533ce.pngbc8004dd5e961b71fabefd125f29728e.png

操作步骤

  1. 填写表达式:=IF(COUNTIF(Sheet1!A:A,A1),"T","F")并回车。基准表格数据是在Sheet1中,比对的范围是A:A,单元格是在A1T表示Sheet2中的这个数据在Sheet1中存在,F表示不存在。7c668e81727c39d643939545d8722f2a.png
  2. 下拉比对6ee3ab2574db0fc173495f47bce2b568.png结果显示:472cab81cb71a30306ab028551c72478.png

注意:比对结果的描述信息可以自定义addeaddfbfa207e989bb4fafdde56c3d.png

总结

  至此,我们就学会如何通过表达式来比对完两个数据表中的数据,是不是很赞?遇到问题的时候,我们不能死教条,一个一个的通过select * from ... ...去核对,这种效率低且单调。我们要学会跳出思维圈,利用一些辅助工具去帮助自己更好的工作,更好的去解决问题。

d0f122771314ecb9903bdc7dfd8cb9e8.gif

[每篇微语]

使我们不快乐的,都是一些芝麻小事,我们可以躲闪一头大象,却躲不开一只苍蝇。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值