当前位置: 首页 > 知识库问答 >
问题:

Access 2007 SQL合并表,不创建重复项

慕容聪
2023-03-14

我想将tblA的唯一值添加到tblB中,而不会基于多个字段创建重复值。在以下示例中,FirstName和LastName确定重复项,Foo和Source无关。

tblA:

FirstName  LastName  Foo  Source
John       Doe       1    A
Jane       Doe       2    A
Steve      Smith     3    A
Bill       Johnson   2    A 

tblB:

FirstName  LastName  Foo  Source
John       Doe       1    B
Bob        Smith     5    B
Steve      Smith     4    B 

这是我想要的结果:

tblA:

FirstName  LastName  Foo  Source
John       Doe       1    A
Jane       Doe       2    A
Steve      Smith     3    A
Bill       Johnson   2    A
Bob        Smith     5    B  

这是我尝试过的代码的等价物:

插入tblA
从tblB中选择B.*作为B
在A.FirstName=B.FirstName和A.LastName=B.LastName上左连接tblA作为A,其中A.FirstName为NULL

这就是我得到的结果:

tblA:


FirstName  LastName  Foo  Source
John       Doe       1    A
Jane       Doe       2    A
Steve      Smith     3    A
Bill       Johnson   2    A
John       Doe       1    B
Bob        Smith     5    B 

tblB的Steve Smith被忽略了,这很好。添加了tblB的John Doe,这很糟糕。我在这上面花了太多时间,我已经尽我所能检查了数据,以确保tblA和tblB中的John Doe是相同的名字和姓氏。有什么想法可能出错吗?

更新:仅供参考,在我真正的tblB中,30000人中大约有10000人应该搬到tblA。这实际上超过了21000。问题是这是一个常见过程的一个步骤。


共有3个答案

黄浩涆
2023-03-14

这个在Access中工作。

您可以无限地运行它-它不会添加超过需要的行:

INSERT INTO tblA
SELECT B.*
FROM tblB AS B
WHERE (((B.FirstName) Not In (select firstname from tblA))
AND ((B.LastName) Not In (select firstname from tblA)))
宿嘉庆
2023-03-14

编辑:抱歉,它在Access2007上不起作用

你有很多方法可以做到这一点:

INSERT INTO tblA 
SELECT B.* FROM tblB AS B 
WHERE B.firstname, B.lastname NOT IN (select firstname, lastname from tblA)

INSERT INTO tblA 
SELECT * FROM tblB
MINUS
SELECT * FROM tblA
尹凌龙
2023-03-14

当我尝试时:

SELECT tbb.*
FROM tbb 
LEFT JOIN tba 
ON (tbb.FirstName = tba.FirstName) 
   AND (tbb.LastName = tba.LastName)
WHERE (((tba.LastName) Is Null));

返回的唯一行是:

Bob        Smith     5    B

有没有可能是无名氏有一个隐藏的性格?

 类似资料:
  • 我有一个数据帧列表。列表中的每个数据帧都是唯一的,这意味着有一些共享但不同的列。我想创建一个dataframe,它包含dataframe列表中的所有列,如果元素不存在,它将填充NaN。我试过以下方法 问题似乎是由于列表中的数据帧造成的。每个数据帧只有一行,因此其索引为零,因此重新编制索引不会起作用。我试过这个: 几乎生成一个随机数作为索引。但是,要获得此错误,请执行以下操作:

  • 我有一个包含18个数据帧的列表: 所有数据帧都有一个公共id列,因此很容易将它们与pd连接在一起。一次合并2个。有没有一种方法可以一次将它们连接起来,从而使dfList作为单个数据帧返回?

  • 我想同时执行两个流,并生成作为前两个流的组合的第三个流 我想从这两个中生成一个新的,它将与这一个等价 我目前找到的是或

  • 问题内容: 我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。 您会注意到结果具有第一个列表, 包括 其两个“ 2”值,但是second_list也具有附加的2和5值这一事实并未添加到第一个列表中。 通常,对于这样的事情,我会使用集合,但是first_list上的集合会清除它已经具有的重复值。所以我只是想知道什么是实

  • 我有一个对象,如下所示: 我想过滤并创建一个满足任何条件的新数组。例如:过滤器的名称为“AD”,并创建一个新的密钥数组,如下所示: 尝试地图 尝试过了。过滤器: 提前谢谢

  • 给定两个已排序的链表,其中的结果应为并集,不重复。 不允许创建新节点 输入是两个由空行分隔的列表: L1级- L2级- 结果- 下面是我的解决方案,但在Union函数中创建新节点。 有没有什么简单的方法可以通过不创建任何新节点并删除重复节点的逻辑来更改Union函数?