如何在Access SELECT查询中精准筛选匹配指定数据集的ID?
Access多对多关联表精准匹配查询方案
要实现仅返回完全匹配指定DataVal集合的IDVal(排除包含额外DataVal的记录),可以通过以下SQL查询完成:
假设关联表名为LinkTable,目标数据集为200、300、400、500,查询语句如下:
SELECT IDVal FROM LinkTable WHERE DataVal IN (200, 300, 400, 500) GROUP BY IDVal HAVING COUNT(*) = 4 AND NOT EXISTS ( SELECT 1 FROM LinkTable AS LT WHERE LT.IDVal = LinkTable.IDVal AND LT.DataVal NOT IN (200, 300, 400, 500) )
逻辑拆解:
WHERE DataVal IN (...):先过滤出关联了目标DataVal的记录GROUP BY IDVal + HAVING COUNT(*) = 4:确保该IDVal关联的目标DataVal数量刚好等于输入数据集的元素数(这里是4),避免漏匹配的情况NOT EXISTS子查询:排除那些还关联了非目标DataVal的IDVal,保证结果仅包含完全匹配的记录
如果输入数据集的元素数量变化,只需同步修改COUNT(*)的数值和IN子句里的内容即可。
内容的提问来源于stack exchange,提问作者JosephD
相关产品推荐
相关产品推荐

