【MySQL】用 WPS(SqlCel不推荐,另外一种做法) 或 Excel(SqlCel) 的列数据作为查询条件去 MySQL 查询的操作

数据准备

test.xlsx 文件的工作表 Sheet1 的 A 列的数据

A B C
0
1
2
3

目标:将 A 列的数据拼接成 '0','1','2','3'

WPS 中操作

1、开始先看你的数据是否得加单引号,如果得加单引号(B列),如果不用加单引号(C列)

A B C
0 =“,'”&A1&“',” =“,”&A1&“,”
1 =“,'”&A2&“',” =“,”&A2&“,”
2 =“,'”&A3&“',” =“,”&A3&“,”
3 =“,'”&A4&“',” =“,”&A4&“,”

插入函数后就会变成

A B C
0 ,‘0’, ,0,
1 ,‘1’, ,1,
2 ,‘2’, ,2,
3 ,‘3’, ,3,

2、将 B 列或 C 列复制到 notepad-- 里面(notepad++ 也一样),这里用 B 列举例

,'0',
,'1',
,'2',
,'3',

3、按 Ctrl + h 快捷键进行替换操作,下面 查找模式 记得 勾选拓展(\n,\r,\t,\0,\x...) ,然后查找目标填 ,\r\n,替换不用填,然后点击在当前文件中替换(就是全部替换的意思),之后把最前面的逗号去掉就可以了

,'0','1','2','3'

4、我们提取出来的数据(‘0’,‘1’,‘2’,‘3’),写到 in 里面(里面如果查询有重复有必要用 DISTINCT 去重),里面的话正常查询可能会碰到不是按 in 里面的顺序查询出来,可以用下面这种写法,亲测是可以的

SELECT * 
FROMSELECT DISTINCT field1,field2
    FROM table1
    WHERE field2 IN ('0','1','2','3')
)tmp
ORDER BY FIELD(field2,'0','1','2','3'

参考一:用EXCEL一列数据拼接SQL的where条件in语句

参考二:【MySQL】查询保持IN中的顺序

Excel 中操作

1、安装(这个好处是之前没删干净的会全部帮忙删之后再下载最新版且自动激活)

一键自动化 下载、安装、激活 Office 的利器

2、安装插件 SqlCel

SqlCel 安装
注意:安装完后虽然 WPS 也可以使用 SqlCel,但是极度不推荐,因为我自己在使用连接数据库后打开工作面板是全空的,还有一点最恶心的就是新建查询的时候,SQL是没法复制粘贴删除的,下面是有提示“请在Excel中使用数据查询功能”,所以还是使用 Excel 打开 SqlCel 就没问题

3、查询

首先是打开 Excel,上面选择 SqlCel,然后点击数据库连接,选择自己对应的数据库,填写信息后进行连接,
连接后点击工作面板,可以看到数据库里面的表,里面的一些操作可以看看视频了解一下 SqlCel培训视频

我们这次用的是 SqlCel 第14点单元格转字符串(RNGTOSTR函数)

点击上面的SQL(新建查询),我们可以用 'rngtostr([Sheet1!A1:A4],'\,',true)',然后点击上面开始查询,会出现以下信息

开始运行SQL: 2023/10/7 16:38:08
解析后的SQL: '0','1','2','3'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0','1','2','3'' at line 1
用时1.21s

可以看到是拼接出来效果没问题,接下来就是拼接 SQL

SELECT fieldName FROM table1 WHERE fieldName2 IN ('rngtostr([Sheet1!A1:A4],'\,',true)')

相当于

SELECT fieldName FROM table1 WHERE fieldName2 IN ('0','1','2','3')

点击开始查询后,会生成一个叫 QueryTable 的工作表,里面就是查询出来的数据,记住如果需要按顺序查,可以用上面 WPS 的 SQL 方法去操作

参考:如何通过 Excel 查询 MySQL 数据库

你可能感兴趣的:(#,MySQL,excel,mysql)