【发布时间】:2025-12-16 15:10:02
【问题描述】:
我有 2 个表 TestFname 和 TestLname。每个条目都有一些只有名字的条目,一些只有姓氏的条目,还有一些有名字和姓氏的条目。每个人都有唯一的编号,因此如果 Jack Smith 在 TestFname 中出现为“Jack”,在 TestLname 中出现为“Smith”,则 Jack 在两个表中的编号都是“2”。
我希望查询结果只显示所有唯一人员一次,如果是 Jack Smith,请将 TestFname 中的“Jack”与 TestLname 中的“Smith”组合到查询结果中的一条记录“Jack Smith”中。
SELECT IIf([TestFname.F_name] Is Null,[TestLname.F_Name],[TestFname.F_Name]) AS FFName,IIf([TestFname.Number] Is Null, [TestLname.Number],[TestFname.Number]) AS Nnumber
FROM TestFname
LEFT JOIN TestLname
ON TestFname.Number = TestLname.Number
UNION
SELECT IIf([TestFname.L_name] Is Null,[TestLname.L_Name],[TestFname.L_Name]) AS LLName,IIf([TestFname.Number] Is Null, [TestLname.Number],[TestFname.Number]) AS Nnumber
FROM TestFname
RIGHT JOIN TestLname
ON TestFname.Number = TestLname.Number;
这仅给出 2 列输出:FFName 和 Nnumber(无 LLname),Jack Smith 出现在 2 条记录中,而不是 1 条记录中,FFName 和 LLname 都在不同的列中。
【问题讨论】:
标签: ms-access union full-outer-join