找出两张表中匹配的记录
来源:互联网 发布:wemall 源码 编辑:程序博客网 时间:2024/05/01 21:11
工作中要维护一张表,这张表根据另一个部门发过来的Excel文件更新。每次发过来的Excel文件跟我当前的表相比,或者多了几条记录,或者少了几条记录。减少的记录我不用删除,因为我的表是个历史记录,新增的记录我要添加到表里面去。从近千条记录里找出新增的项目,靠人工是不现实的,要用SQL语句完成这项工作。
把我维护的表称为A表,Excel文件导入的表称为B表,我的工作包括两个目标,一是根据B表更新A表中相关的记录,另一个是把B表中有而A表中没有的记录添加到A表中。在工作中对SQL语言又获得了一些经验,这里把它记录下来。虽然我要做的事是找出两张表中不同的记录,我的经验先从找出匹配的记录开始。
表A: ID(Primary Key) Name 表B: ID(Primary Key) Name
01 北京 01 北京
02 上海 02 上海
03 天津 04 杭州
04 杭州 05 广州
06 成都
我尝试了Select语句不同的表达方法,虽然结果相同,但背后的逻辑是不太一样的。
1、SELECT A.ID, A.Name FROM A INNER JOIN B ON A.ID=B.ID;
感觉这个写法比较简洁,INNER JOIN 帮你把相同的记录筛选出来了,我只是把我要的字段列一下。
注意在Access中,返回的查询下部有新增记录空白行。
2、SELECT A.ID, A.Name FROM A, B WHERE (A.ID=B.ID);
我分析下来,这样写相当于自己在完成 INNER JOIN的工作。详细的步骤应该是:A中全部记录跟B中第一条记录逐一对比,找到相符的就记录下来;A中全部记录再跟B中第二条记录逐一对比,相符的记录下来;如此类推,直到B表的最后一条记录。
注意在Access中,返回的查询下部“没有”新增记录空白行。
3、SELECT A.ID, A.Name FROM A, B WHERE A.ID in (B.ID);
注意在Access中,返回的查询下部“没有”新增记录空白行。
4、SELECT A.ID, A.Name FROM A WHERE A.ID in (select B.ID from B);
这里用到了“子查询”。注意在Access中,返回的查询下部有新增记录空白行。
- 找出两张表中匹配的记录
- 找出两张表中不匹配的记录
- C# String 找出匹配的数据
- 找出输入中的一个或多个匹配的字符串
- CSDN 讨论的找出缺失数的方法记录
- Oracle 找出重复记录
- 如何找出两表中相同字段中不重复的记录?
- SQL 找出一个表中各个分类的前三条记录
- sqlite找出时间相差3天的记录
- 找出与某id相近的四条记录
- ORACLE如何找出某一列中含有中文的记录
- 找出数据库中重复记录的SQL语句并删除
- 找出A表比B表多的记录
- 将表中重复的字段记录都找出来
- oracle找出表中某几个字段数据相同的记录
- 海量数据中,找出出现次数TOPK的记录
- SQL 找出一字段中所有重复的记录
- 两个大文件找出相同的一条记录
- 水彩效果渲染
- 详解链表的转置问题
- 如何成为高手
- 北京纪行之四:年会归来
- 如何将delphi的整个form保存为图像?包含下拉条隐藏的部分。
- 找出两张表中匹配的记录
- 猪年春节短信-猪年搞笑短信[合集]
- 诺基亚(NOKIA)手机 功能代码
- 发展现代农业扎实推进新农村建设
- 商务部公布2006年度最具市场竞争力品牌名单
- Visio中生成C#属性的方法
- Why are some things left undefined in C++?
- 熊猫烧香案疑犯抓捕全程揭秘
- 新学入侵常用的命令.