我有两个具有相同no.of列和相同列名的表,列的数据类型彼此相同,但其中一个表将有一些额外的记录。我如何找到这些。
表1
Name Description EID
name1 ssdad 1001
name2 gfd 1002
name3 gfdsffsdf 1003
表2
Name Description EID
name1 ssdad 1001
name2 gfd 1002
name3 gfdsffsdf 1003
name2 gfd12344 1002
name3 gfdsffsdf 1003
name5 gfd 1002
name6 gfdsffsdf 1003
如何在查询中指定
答案 0 :(得分:3)
SQL
是这种情况下的最佳途径。我尝试查看内置的ACCESS
数据库功能,因为很可能大多数人都会以Access数据库生态系统的方式发现认为。无论如何,展示一个Access UI友好的设计方法可能会很好......
这是我的两张表及其样本数据:
表1 :(有更多记录)
表2:
有一个向导设计一个类似于OP请求的查询对象:
选择进一步修改设计,但会发现一个限制:给定的表关系不能定义超过两个最大连接数。 OP的三列示例不满足于额外的工作。
三列等连接的备用转换是一个连接字符串,表示单个列中的所有三个列值。这将克服连接限制。我创建了Query1
和Query2
,它们分别从Table1
和Table2
中选择了所有列,第三列由以下Access DB表达式构建器定义:
-- For Query1:
[Table 1]![Name_Col] + [Table 1]![Description_Col] + Str( [Table 1]![EID] )
-- For Query2:
[Table 2]![Name_Col] + [Table 2]![Description_Col] + Str( [Table 2]![EID] )
应用相同的向导,但加入Query1
和Query2
除了从三个原始数据列派生的新COMPOSITE KEY
值。
最终结果:
因此Access数据库用户有自己的本地方法来设置操作和数据操作。既然在响应中发布了SQL
和ACCESS
db方法,可以对每种方法如何分解手头的问题进行一些比较分析。享受!
答案 1 :(得分:2)
在表2中找到额外的内容:
select
*
from
table1 t1
left join table2 t2 on t1.name = t2.name
and t1.description = t2.description
and t1.eid = t2.eid
where
t1.name is null