sql 查询 一张表里面的数据 在另一张表中是否存在 和 比对两个集合中的差集和交集(原创)
这两天在搞一个修复的小功能
需求: A表,B表,C表,日志文件
先筛选出A表和B表中都符合条件的数据,然后检查这些数据在C表中是否存在。如果不存在,就从日志中读取数据,存入C表中,如果存在,则不做操作。
逻辑理清之后,自己尝试了很多方式,一直都不能让自己满意,都感觉性能太低,还可以在优化,因为时间关系,不能再拖了,就先记录一下 目前还凑合的实现方式,后续有时间的话,会再次优化一下。以下共勉
DataTable dt= select A.*,B.fhsj, case when (select count(*) from C where fphm = A.fphm and fpdm=A.fpdm)> then else end as flag from A join B on B.listId=A.ID
where A.cfjc_pt = '' and A.inType <> '' and A.recog = '' and B.cyzt=='' and (B.fhsj between '2019-06-12 00:00:00' and '2019-06-14 23:59:59' ) order by B.fhsj desc
//注解:flag:如果A表和B表 中都符合的数据在C表中存在,则flag=1,不存在的话,flag=0;
取出日志中指定位置的数据
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream) {
sb.AppendLine(sr.ReadLine() + "<br>");
}
string[] result = Regex.Matches(sb.ToString(), @"(?<=开始字符串).*?(?=结束字符串)")
.Cast<Match>().Select(s => s.Value.Trim()).ToArray();
foreach (var item in result) {
Console.WriteLine(item.TrimStart(':').TrimEnd(','));
}
Console.ReadKey();
因为还要比对 dt 表中的数据 在日志中是否存在。
想了一个比较low的实现,将dt表中的唯一标识的数据信息取出来,放入一个ListA集合中
将日志中所需数据集合存在ListB集合中
然后利用IEnumerable集合中Intersect(交集)函数,筛选出我所需的数据
很简单的一个小实现,每天进步一点点。。。。
sql 查询 一张表里面的数据 在另一张表中是否存在 和 比对两个集合中的差集和交集(原创)的更多相关文章
- mysql插入一张表里的数据到另一张表
公司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要 ...
- MySQL 实现将一个库表里面的数据实时更新到另一个库表里面
MySQL 实现将一个库表里面的数据实时更新到另一个库表里面 需求描述:MySQL 里面有很多的数据库,这些数据库里面都有同一种表结构的表 (tb_warn_log),这张表的数据是实时更新的,现在需 ...
- 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素
package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...
- sql server 数据库导出表里所有数据成insert 语句
有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...
- sql 查询某个条件多条数据中最新的一条数据或最老的一条数据
sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...
- sql server数据库导出表里所有数据
主要步骤: 连接数据库>选择需要导出数据的数据库>任务>生成脚本 点击下一步,选择特定数据库对象>选择需要导出的数据表,下一步 选择高级>要编写脚本的数据的类型:仅限数据 ...
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
1. 表结构完全一样 insert into 表1 select * from 表2 2. 表结构不一样(这种情况下得指定列名) insert into 表1 (列名1,列名2,列名3) selec ...
- sql查询某段时间内的数据
查询半小时内数据的方法 1.select * from 表名 where datediff(minute,createtime,getdate())<30 2.select * from 表名 ...
- Sqlite插入、修改、删除表里面的数据
转载 2014年05月10日 10:38:21 标签: sqlite3 / 数据库 8688 转自:http://www.cnblogs.com/myqiao/archive/2011/07/13/2 ...
随机推荐
- poj 3053 优先队列处理
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 39029 Accepted: 12681 De ...
- ios 上传视频或图片
关于iOS如何实现视频和图片的上传, 我们先理清下思路 思路: #1. 如何获取图片? #2. 如何获取视频? #3. 如何把图片存到缓存路径中? #4. 如何把视频存到缓存路径中? #5. 如何上传 ...
- Mysql和sqlServer命令比较
http://cool.china.blog.163.com/blog/static/697310642010111202531210 Mysql和sqlServer命令比较 按语句功能划分,依次讲解 ...
- sublime 常用快捷键备忘
转一篇sublime常用的快捷键备忘 sublime常用快捷键 选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本.Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本 ...
- linux中的strip命令简介------给文件脱衣服【转】
转自:http://blog.csdn.net/stpeace/article/details/47090255 版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则 ...
- mdev的基本工作原理【转】
转自:http://www.cnblogs.com/hnrainll/archive/2011/06/10/2077435.html 分析过mdev(udev的BusyBox简化版)源码的都知道mde ...
- php中Mail_mimeDecode无法读取foxmail等eml文件正文问题
使用$cat -A xx.eml文件,发现foxmail的eml文件文件结尾和空行使用的\r\r\n, 如: Received: from WDGTO0MYSBX754J (unknown [106. ...
- delphi 内存泄露 分析
- 导入Excel表中的数据
第一步:转换导入的文件 private void btnSelectFile_Click(object sender, EventArgs e) { OpenFileDialog ofd = new ...
- 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡
Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...