这两天在搞一个修复的小功能

需求:  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 查询 一张表里面的数据 在另一张表中是否存在 和 比对两个集合中的差集和交集(原创)的更多相关文章

  1. mysql插入一张表里的数据到另一张表

    公司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要 ...

  2. MySQL 实现将一个库表里面的数据实时更新到另一个库表里面

    MySQL 实现将一个库表里面的数据实时更新到另一个库表里面 需求描述:MySQL 里面有很多的数据库,这些数据库里面都有同一种表结构的表 (tb_warn_log),这张表的数据是实时更新的,现在需 ...

  3. 黑马基础阶段测试题:创建一个存储字符串的集合list,向list中添加以下字符串:”C++”、”Java”、” Python”、”大数据与云计算”。遍历集合,将长度小于5的字符串从集合中删除,删除成功后,打印集合中的所有元素

    package com.swift; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; ...

  4. sql server 数据库导出表里所有数据成insert 语句

    有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...

  5. sql 查询某个条件多条数据中最新的一条数据或最老的一条数据

    sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...

  6. sql server数据库导出表里所有数据

    主要步骤: 连接数据库>选择需要导出数据的数据库>任务>生成脚本 点击下一步,选择特定数据库对象>选择需要导出的数据表,下一步 选择高级>要编写脚本的数据的类型:仅限数据 ...

  7. mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子

    1. 表结构完全一样 insert into 表1 select * from 表2  2. 表结构不一样(这种情况下得指定列名) insert into 表1 (列名1,列名2,列名3) selec ...

  8. sql查询某段时间内的数据

    查询半小时内数据的方法 1.select * from 表名 where datediff(minute,createtime,getdate())<30 2.select * from 表名 ...

  9. Sqlite插入、修改、删除表里面的数据

    转载 2014年05月10日 10:38:21 标签: sqlite3 / 数据库 8688 转自:http://www.cnblogs.com/myqiao/archive/2011/07/13/2 ...

随机推荐

  1. Juice Junctions

    Juice Junctions 题目描述 你被雇佣升级一个旧果汁加工厂的橙汁运输系统.系统有管道和节点构成.每条管道都是双向的,且每条管道的流量都是11升每秒.管道可能连接节点,每个节点最多可以连接3 ...

  2. 基于深度摄像头的障碍物检测(realsense+opencv)

    前几天老大给了个任务,让我帮slam组写一个基于深度摄像头的障碍物检测,捣鼓了两天弄出来了,效果还不错,就在这里记一下了. 代码的核心思路是首先通过二值化,将一米之外的安全距离置零不考虑,然后通过开运 ...

  3. DFA Minimization

    有点晚了我就不调试了..不过说是这么说我还是过了编译的.. #include<bits/stdc++.h> using namespace std; namespace DFA{ cons ...

  4. vue项目中使用iconMoon图标

    前两篇文章写了一下如何在vue项目中使用vue-awesome和阿里的iconfont,这里介绍一下如何使用iconMoon图标 iconMoon和前两者相比可以生成自己的矢量图,这点是我喜欢的.至于 ...

  5. 一些汇编中的 trick

    1. PC 总是指向下一条将要被执行的指令,而不是指向正在被执行的指令,这是有道理的,因为执行指令不是一个 atom 过程,而是分成了好多步骤,在执行指令的过程中 cpu 完全有可能将下一条将要执行的 ...

  6. win8.1 uefi引导

    装上win8后,感觉似乎开机比win7要慢一些,但实际掐表又发现几乎无差别,但是看网上别人都说 win8可以10秒以内开机,然后又说他们是采用uefi引导,而不是bios引导,那我也试试吧,如下: 1 ...

  7. Android使用圆角

    圆角Button 效果图 绿色Button 定义button_green.xml资源文件位于drawable文件夹下,可用作button的background属性 button_green.xml: ...

  8. abstract抽象类和interface接口

    一.抽象类 1.抽象类不能实例化,因为有抽象方法未实现 2.可以被抽象类或非抽象类继承 3.但不是只能被继承,还可以直接拿来使用的,当然,这个使用是拿来声明,反例如下: public abstract ...

  9. php--获取用户ip

    一般在做登录的时候有的会要求同一个帐号不能同时用不同的ip登录,这个时候我们需要获取到用户IP地址 获取ip地址的函数: function getIP() { if (getenv('HTTP_CLI ...

  10. (8)ftp配置文档

    1.vsftpd文件夹中的ftpusers文件的作用 它是一个黑名单,ftpusers不受任何配制项的影响 该文件存放的是一个禁止访问FTP的用户列表 管理员不希望一些拥有过大权限的帐号(比如root ...