sql自动批量查询的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql自动批量查询的问题相关的知识,希望对你有一定的参考价值。

有一张关于缺陷数据的表格如:
序号 填报时间 缺陷内容 处理情况 处理部门
1 2015-5-1 空压机启动不了 已处理 部门甲
2 2015-5-2 磨煤机某电机坏 正在处理 部门甲
3 2015-5-2 空压机故障报警 已处理 部门甲
4 2015-5-3 磨煤机电源故障 已处理 部门甲
5 2015-5-4 密封风风机启动不了 已处理 部门甲
6 2015-5-5 给煤机某模块故障 已处理 部门甲

我希望分析5月份的设备缺陷发生频率情况,于是我生成了一张现场设备的关键词列表key如:
ID keyword
1 空压机
2 磨煤机

我现在只能实现单个关键词查询如:select * from 缺陷数据 where 缺陷内容 like '%'+(select keyword from key where ID=1)+'%' ,结果如:
1 2015-5-1 空压机启动不了 已处理 部门甲
3 2015-5-2 空压机故障报警 已处理 部门甲

我希望实现的是:按ID顺序将所有关键词都查出来,并依次排列,没有对应关键词的也显示在后面,如:
1 2015-5-1 空压机启动不了 已处理 部门甲
3 2015-5-2 空压机故障报警 已处理 部门甲
2 2015-5-2 磨煤机某电机坏 正在处理 部门甲
4 2015-5-3 磨煤机电源故障 已处理 部门甲
5 2015-5-4 密封风风机启动不了 已处理 部门甲
6 2015-5-5 给煤机某模块故障 已处理 部门甲
因为实际现场设备多达千种,每月缺陷几百条,人工很累又容易出错,所以希望用程序来时间自动批量的完成查询,并将结果显示出来,所以求解答!

SELECT D.*
FROM 缺陷数据 D, [Key] K
WHERE 缺陷内容 LIKE '%' + K.keyword + '%'
ORDER BY K.ID

参考技术A select a.*,b.keyword from 缺陷表 a
inner join 关键词表 b on CHARINDEX(b.keyword,a.缺陷内容,1)>0
order by b.id,a.序号追问

我用的access,用你的语句显示CHARINDEX未定义。。

请问SQL如何实现批量查询

SQL server数据库,有一个工资表,有20万条记录,字段如下:
身份证号 工资

现在本地客户端access的表里面有1000个身份证号,要输出其对应sql server上的工资。
谢谢!
谢谢各位!

具体问题是:
客户端程序的数据库为Access,
有多人同时使用客户端程序,如果在Sql上建立临时表的办法,
是不是各个客户端建立的临时表不能重名,而且执行完毕还要删除各自建立的临时表?

谢谢!

好像解决办法有点愚蠢,但是确实可以这么用
先把那1000多个号码导出成文本
然后在sqlserver里建一张表
create table shenfenzheng (shengfenzheng_id varchar(18));

然后把导出的文本用UE编辑成
insert into shenfenzheng values (\'xxxxxxxxxxxxxxxxxx\');
insert into shenfenzheng values (\'yyyyyyyyyyyyyyyyyy\');
.
.
.
共1000条
然后在sqlserver里执行上述语句,记得后边一定要带分号

然后写个查询
select * from 工资表 where 身份证号 in(select shenfenzheng_id from shenfenzheng);
得到的就是你想要的结果
---------补充---------
你所说的用户是指客户端程序的用户,和数据库用户关系应该不大,各个客户端应该在程序里都有连接数据库的文件,也就是实际操作的用户连接数据库时用的都是数据库同一个用户,所以不用在每个用户下都建临时表
参考技术A 很简单,直接在工资表所在的数据库里导入access的身份证号表,然后联合查询就可以了。

联合查询语句如下:
select A.身份证号,B.工资 from 工资表 A left join 工资表 B on A.身份证号=B.身份证号

如果你不会把access导入SQL server可以给我留言或网上查询资料。
参考技术B 这个可以通过编程连接数据库来解决。
第一个外循环,将身份证号不断从access中导入,第二个内循环,将其带入SQL Server数据库验证,相同就输出。
可以使用ADO.NET实现。
参考技术C 如果安全性要求不高的话,把苦客户端的省份证号传入SQL,直接在ACCESS里用参数查询.查询语句为.SELECT * FROM * WHERE IN (*),,可以试试 参考技术D 临时表不用删除吧,我在重启sql server时,临时表#temp 就消失了呀

以上是关于sql自动批量查询的问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL批量查询和替换

hbase批量查询卡住

批量查询sql脚本

SQL语句批量查询~

Hibernate的批量查询——原生sql查询

ElasticSearch批量查询