我正在尝试根据三个特定列(名字,姓氏和邮政编码)在Access中合并多个列表)并添加一列以跟踪数据的来源。我想我应该使用一些联合查询和更新查询的变体,但感觉我错过了一块。
我正在尝试做三件事。
我已经能够合并列表,但它仍然会产生重复。它合并所有记录而不删除或覆盖任何具有冲突数据的记录。
这是一个可视化:
表1(优先列表)
FirstName| LastName| Pcode| Email
______________________________________________________
Taylor| Verrall| V7W1B5| hello@taylorverrall.com
Nick| Smith| V7G1F4| nick@hotmail.com
表2
FirstName| LastName| Pcode| Email
______________________________________________________
Taylor| Verrall| V7W1B5| tbverrall@gmail.com
Peter| Jones| V7Q3R2| jones123@hotmail.com
我得到的是什么:
FirstName| LastName| Pcode| Email
______________________________________________________
Taylor| Verrall| V7W1B5| hello@taylorverrall.com
Nick| Smith| V7G1F4| nick@hotmail.com
Taylor| Verrall| V7W1B5| tbverrall@gmail.com
Peter| Jones| V7Q3R2| jones123@hotmail.com
我想要的是什么:
FirstName| LastName| Pcode| Email| Source
________________________________________________________________
Taylor| Verrall| V7W1B5| hello@taylorverrall.com| Table 1
Nick| Smith| V7G1F4| nick@hotmail.com| Table 1
Peter| Jones| V7Q3R2| jones123@hotmail.com| Table 2
答案 0 :(得分:0)
我知道一个非常简单的解决方案......我需要像今天这样的东西。你知道你也可以选择静态值:D喜欢这个......
假设两个表上的列数相同:
更新(根据6月7日的反馈:)
SELECT * FROM
(SELECT *, "Table1" as tblName FROM Table1
UNION ALL
SELECT *, "Table2" as tblName FROM Table2
WHERE NOT (FirstName, LastName, Pcode, Email) IN
(SELECT FirstName, LastName, Pcode, Email AS FLP FROM Table1)
) collection
这将产生包含所有数据的最终结果,最后是表格的名称;)
答案 1 :(得分:0)
如果Table1优先选择记录,请考虑:
SELECT *, "T1" AS Source FROM Table1
UNION SELECT *, "T2" FROM TABLE2 WHERE NOT FirstName & LastName & Pcode IN (SELECT FirstName & LastName & Pcode AS FLP FROM Table1);
也许只使用Pcode作为标准。