【问题标题】:I would like to compare two columns in two tables我想比较两个表中的两列
【发布时间】:2014-06-20 23:13:40
【问题描述】:

我有两个表MainTraining,我在Main.ID = Training.EMP_ID; 上完全加入它们,但我的数据有一个大问题。

我必须使用FULL JOIN 从两个表中获取所有数据;但是我的Training 表中有一些IDEmp_NamesMain 表不同。

我需要比较两列并返回两个表中的所有EMP_ID,并比较两个表中的EMP_Names,以确保它们不会被多次记录!

我将不胜感激!

我为我的完整 JOIN 创建了 UNION,我得到了这个

ID       DataA        DataB 1 
1        DataA1  
2        DataA2  
3        DataA3 
4        DataA4  
5        DataA5  
6        DataA6      DataB6 
7        DataA7      DataB7 
8        DataA8      DataB8  
9        DataA9      DataB9 
10       DataA10     DataB10  
11                   DataB11  
12                   DataB12
13                   DataB13 
14                   DataB14 
15                   DataB15

现在,如何将这两列合并为一个?并消除重复并放入一列?

【问题讨论】:

  • 这样的事情可能会有所帮助 [stackoverflow.com/questions/19615177/…
  • 在这种情况下,我通常会创建一个联合查询以将每个表中的所有 ID 放到一个位置,然后在下一个查询中使用联合查询的外连接到每个源表。然后我可以很容易地识别公共记录(ID 存在于两个表中)或源表中的记录而不是另一个(2 个 ID 中的一个在源表中为空)。
  • 添加类似“Data:iif(dataAnull,dataA,dataB)”的字段 - 取决于您希望它们重叠时的结果(如第 6-10 行)。您可以在 Union 查询或基于 Union 构建的第二个查询中添加该字段,这可能更容易,这也是我会做的。
  • @DonGeorge 谢谢 :)
  • @DonGeorge 你能给我一个例子,说明你如何编写联合以将两个表中的所有 ID 放到一个地方,最后你说你在下一个中使用从联合到每个源表的外连接查询...

标签: ms-access vba ms-access-2007 ms-access-2010


【解决方案1】:

我设置了 2 个表,MAIN 和 TRAINING,每个表都有一个 ID 字段和一个 Emp_Names 字段。

获取所有 ID 的联合查询(ID Master List)是

Select ID from Main
Union select ID from Training;

获得所需结果的第二个查询是

SELECT [ID Master list].ID, 
Main.Emp_Names AS [Main name], 
Training.Emp_Names AS [Training name], 
IIf([main].[emp_names] Is Not Null,[main].[emp_names],[training].[emp_names]) AS Name

FROM ([ID Master list] 

LEFT JOIN Main ON [ID Master list].ID = Main.ID) 
LEFT JOIN Training ON [ID Master list].ID = Training.ID;

您可以修改 iif 语句中的逻辑,以更改当两个名称都存在但可能不同时所做的操作。

【讨论】:

    【解决方案2】:

    听起来您正在尝试查找重复项,以便摆脱它们。

    Access 有一个查询向导,可让您在两个表之间查找重复项。

    我建议尝试这个来找到重复的而不是使用联合...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-03
      • 2021-08-27
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      相关资源
      最近更新 更多