Access查询:如何将两个表中的PhoneNum字段合并为一个字段
当然可以实现!
在Access里,完全能通过查询来完成你这个合并字段的需求,具体可以根据你的数据情况选下面两种常用方法:
1. 关联匹配后合并字段(对应同一条完整记录)
如果Table A和Table B里的[PhoneNum]是用来匹配同一条完整记录的(比如A存客户的基础信息,B存客户的额外联系方式,同一个客户的PhoneNum在两个表里是一致的),那你可以用查询把两个表的字段整合,同时把两个PhoneNum合并成单个字段(还能处理其中一方为空的情况)。
直接写SQL的话,示例如下:
SELECT Nz(TableA.PhoneNum, TableB.PhoneNum) AS 完整手机号, TableA.客户姓名, TableB.客户地址 FROM TableA LEFT JOIN TableB ON TableA.PhoneNum = TableB.PhoneNum;
这里的Nz()是Access专属函数,作用是如果TableA的手机号为空,就取TableB的,反之就用TableA的,这样就得到了合并后的单个手机号字段,同时还能把两个表的其他字段一起展示出来。
要是有些记录只在Table B里有,不在Table A里,那可以用UNION模拟全连接来覆盖所有情况:
SELECT Nz(TableA.PhoneNum, TableB.PhoneNum) AS 完整手机号, TableA.客户姓名, TableB.客户地址 FROM TableA LEFT JOIN TableB ON TableA.PhoneNum = TableB.PhoneNum UNION SELECT Nz(TableB.PhoneNum, TableA.PhoneNum) AS 完整手机号, TableA.客户姓名, TableB.客户地址 FROM TableB LEFT JOIN TableA ON TableB.PhoneNum = TableA.PhoneNum;
2. 合并两个表的所有手机号记录(无关联的联合)
如果你的需求是把两个表里所有的PhoneNum都合并到一个字段里(不管记录是否匹配,相当于把两列手机号合并成一个大列表),那用UNION查询就可以:
SELECT PhoneNum AS 完整手机号 FROM TableA UNION SELECT PhoneNum AS 完整手机号 FROM TableB;
这个查询会自动去掉重复的手机号,要是想保留重复的,把UNION改成UNION ALL就行。
小提示
- 要是你不太会写SQL,也可以用Access的查询设计器:添加两个表,把两个表的
PhoneNum字段拖到一起建立关联,然后在字段行输入完整手机号: Nz([TableA].[PhoneNum],[TableB].[PhoneNum])就能创建合并字段啦。 - 操作前记得备份数据,避免意外情况~
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

