vlambda博客
学习文章列表

Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据

This browser does not support music or audio playback. Please play it in Weixin or another browser. Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据

引言

  在线上运维的过程中,遇到一个头疼的事情,有一些合作公司的数据直接从平台上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())表达式。

分解

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

操作详解

场景说明

  假设Sheet1为参考数据,Sheet2为需要比对的数据。比对Sheet2中是否在Sheet2中有相同的数据。Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据

操作步骤

  1. 填写表达式: =IF(COUNTIF(Sheet1!A:A,A1),"T","F")并回车。基准表格数据是在 Sheet1中,比对的范围是 A:A,单元格是在 A1T表示 Sheet2中的这个数据在 Sheet1中存在, F表示不存在。 Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据
  2. 下拉比对 Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据结果显示: Mysql | 通过Excel的if(countif())表达式来筛选两个表格中相同的数据

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

总结

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

[每篇微语]

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