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

Access多表查询去重问题:含指定字符串的图书ID与标题查询

解决Access家庭图书馆查询重复记录问题

问题分析

你的查询返回重复图书记录,根源是单本图书关联了多个符合条件的作品,qryBookOrWork中间查询会为每个匹配的作品生成一行数据,最终导致同一本书出现多条结果。

解决方案

以下三种方法都能实现需求,返回不重复的图书ID和Title:

方法1:使用DISTINCT去重

直接在查询中添加DISTINCT关键字,过滤重复的图书记录:

SELECT DISTINCT QBW.ID, QBW.Title
FROM qryBookOrWork AS QBW
WHERE (QBW.Title LIKE '*civil*') OR (QBW.WorkTitle LIKE '*civil*')

注意:Access中模糊匹配的通配符是*,而非SQL标准的%;如果你的查询启用了ANSI SQL模式,才需要替换成%。另外原查询中LIKE 'civil'是精确匹配,改为*civil*才能匹配包含该字符串的内容。

方法2:使用EXISTS子查询(更高效)

跳过中间查询,直接关联原表,通过子查询判断是否存在符合条件的作品,从根源避免生成重复行:

SELECT B.ID, B.Title
FROM Books AS B
WHERE B.Title LIKE '*civil*'
OR EXISTS (
    SELECT 1
    FROM BookWorkLink AS L  -- 替换为你的多对多中间表实际名称
    INNER JOIN Works AS W ON L.WorkID = W.ID
    WHERE L.BookID = B.ID
    AND W.Title LIKE '*civil*'
)

方法3:使用GROUP BY分组

按图书ID和Title分组,确保每个图书只返回一条记录:

SELECT QBW.ID, QBW.Title
FROM qryBookOrWork AS QBW
WHERE (QBW.Title LIKE '*civil*') OR (QBW.WorkTitle LIKE '*civil*')
GROUP BY QBW.ID, QBW.Title

内容的提问来源于stack exchange,提问作者Les Gordon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:05:19