You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS-Access SQL如何从两列中选取存在于另一张表的对应值

MS Access 双列匹配校验表SQL查询解决方案

原代码问题

你编写的Switch逻辑本身符合需求,但是没有过滤两列均不在校验表中产生的Null结果行,导致返回了不需要的无效数据。

正确写法

版本1:适配原有逻辑的修正版

保留你原有的Switch判断逻辑,新增WHERE条件过滤无效行:

Select 
Switch(
       DataA in (SELECT DataC FROM CheckTable), DataA,
       DataB in (SELECT DataC FROM CheckTable), DataB
      ) AS Result
FROM SourceTable
WHERE Switch(
       DataA in (SELECT DataC FROM CheckTable), DataA,
       DataB in (SELECT DataC FROM CheckTable), DataB
      ) IS NOT NULL;

该写法优先返回每行DataA的匹配值,仅当DataA无匹配时返回DataB的匹配值,每行最多返回1个结果。

版本2:更高性能的去重版

用UNION合并两列的匹配结果,自动去重,执行效率更高:

SELECT DataA AS Result
FROM SourceTable
WHERE DataA IN (SELECT DataC FROM CheckTable)
UNION
SELECT DataB AS Result
FROM SourceTable
WHERE DataB IN (SELECT DataC FROM CheckTable)

该写法会提取两列中所有符合条件的值,自动去除重复值,刚好匹配你给出的场景期望输出。

内容的提问来源于stack exchange,提问作者SHA-256

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:39:01