创建一个UNION查询,用于标识唯一数据来自哪个表

tho*_*mad 7 sql union ms-access unique

我有两个数据表.两个表都有一CUSTOMER_ID列(数字).我试图得到所有唯一值的列表,CUSTOMER_ID 知道CUSTOMER_ID两个表中是否存在或只存在一个(以及哪一个).

我可以很容易地得到一个独特的列表CUSTOMER_ID:

SELECT tblOne.CUSTOMER_ID
FROM tblOne.CUSTOMER_ID
UNION
SELECT tblTwo.CUSTOMER_ID
FROM tblTwo.CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)

我不能只为SELECTstatemtn 添加一个标识符列(如:),SELECT tblOne.CUSTOMER_ID, "Table1" AS DataSource因为那时记录不是唯一的,它将获得两组数据.

我觉得我需要在此查询中的其他位置添加它,但我不确定如何.

为清晰起见编辑:

对于联合查询输出,我需要一个额外的列,可以告诉我我看到的唯一值是否存在于:(1)两个表,(2)表一或(3)表二.

Gor*_*son 12

如果CUSTOMER_ID出现在两个表中,那么我们将不得不随意选择要调用源的表.在这种情况下,以下查询使用"tblOne"作为[SourceTable]:

SELECT
    CUSTOMER_ID,
    MIN(Source) AS SourceTable,
    COUNT(*) AS TableCount
FROM
    (
        SELECT DISTINCT
            CUSTOMER_ID, 
            "tblOne" AS Source
        FROM tblOne
    UNION ALL
        SELECT DISTINCT
            CUSTOMER_ID,
            "tblTwo" AS Source
        FROM tblTwo
    )
GROUP BY CUSTOMER_ID
Run Code Online (Sandbox Code Playgroud)

  • @thornomad不客气.顺便说一句,我通过将DISTINCT添加到子查询组件来稍微调整查询.即使两个表中的任何一个表中存在重复的CUSTOMER_ID值,这也将确保一致的结果. (2认同)