加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

ms-access – 我想了解Microsoft Access向导生成的查询

发布时间:2020-12-14 02:45:31 所属栏目:Windows 来源:网络整理
导读:假设我有一个名为tbl_med的表,它有六个字段:[nom_lab],[nom_desc],[nom_apres],[date_vig],[cod_med],[vr_pmc]. 我想要一个MS Access SQL查询,它将: 查找与四个字段相关的重复记录:[nom_lab],[date_vig]. 显示所有六个字段(不仅仅是用于检查重复字段的字
假设我有一个名为tbl_med的表,它有六个字段:[nom_lab],[nom_desc],[nom_apres],[date_vig],[cod_med],[vr_pmc].

我想要一个MS Access SQL查询,它将:

>查找与四个字段相关的重复记录:[nom_lab],[date_vig].
>显示所有六个字段(不仅仅是用于检查重复字段的字段).

我使用MS Access“查找重复查询向导”,它给了我以下SQL:

SELECT tbl_med.[nom_lab],tbl_med.[nom_desc],tbl_med.[nom_apres],tbl_med.[date_vig],tbl_med.[cod_med],tbl_med.[vr_pmc]
FROM tbl_med
WHERE tbl_med.[nom_lab] 
IN 
(
    SELECT [nom_lab] 
    FROM [tbl_med] As Tmp 
    GROUP BY [nom_lab],[date_vig] 
    HAVING Count(*)>1
And [nom_desc] = [tbl_med].[nom_desc] 
    And [nom_apres] = [tbl_med].[nom_apres]
    And [date_vig] = [tbl_med].[date_vig]
)
ORDER BY tbl_med.[nom_lab],tbl_med.[date_vig];

谁能解释为什么上面的水平规则线之间的三个条件是必要的?

有没有人有更直观的查询,这将更容易理解?

解决方法

本质上,三个And子句在那里,因为你告诉查询向导你不仅要检查[nom_lab]字段上的重复项,还要检查[nom_desc],[nom_apres]和[date_vig]字段(就像你一样)在你问题的开头说明).

SELECT [nom_lab] FROM [tbl_med] As Tmp … HAVING Count(*)>子查询的1部分告诉它查找具有重复[nom_lab]值的记录.然后,And子句通过实际说明“除了具有重复的[nom_lab]值之外,还要满足剩余的所请求的重复标准,我想只看到在所有这三个其他字段中也有重复的记录([nom_desc],[ nom_apres]和[date_vig]).“

所以要回答你的第二个问题,我真的看不出你怎么能强迫它更直观. SQL只是一种棘手的语言,有时会让你头脑发热,就像任何语言(无论是编程语言还是口语)一样,在您轻松阅读之前,需要花时间学习它的模式和细微差别.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读