【问题标题】:ms access, need to get all rows with a distinct columnms 访问,需要获取具有不同列的所有行
【发布时间】:2021-03-23 07:44:16
【问题描述】:

我有一个名为“parts”的表,其中存储有关电连接器的信息,包括触点、后壳等。作为组件一部分的所有零件在名为“assemblyID”的列中都有一个值。还有一个名为“partDefID”的列,在此列中,连接器的值为 2,联系人为 3。我需要获取所有具有唯一 assemblyID 的连接器的行。只需选择 partDefID 为 2 的行即可轻松获取表示连接器的行,但这将返回多行可能属于同一程序集的连接器。我只需要那些具有唯一 assemblyID 的连接器行。我怎样才能做到这一点? 见下图:

我想要得到的只是下面显示的行之一,它们中的任何一个都可以,因为它们都是同一个程序集的一部分。 just one of these rows needed

[更新] 看来我的问题没有很好地形成,并且不赞成使用图像。不过,插入我的表格的文本版本看起来真的很可怕!我会努力做得更好。是的,我是 sql 和这个网站的新手

【问题讨论】:

  • 这里的大多数人希望样本表数据和预期结果为格式化文本,而不是图像。还;简化! minimal reproducible example
  • 对于 any 一行使用 TOP: SELECT TOP 1 * FROM parts

标签: sql ms-access subquery greatest-n-per-group


【解决方案1】:

如果您只希望每个程序集 ID 有一个“连接器”行,则可以使用子查询进行过滤。假设PartRefID 是唯一键:

select *
from parts as p
where [PartRefID] = (
    select max(p1.[PartRefID])
    from parts as p1
    where p1.[AssemblyID] = p.[AssemblyID] and p1.[PartDefID] = 2
)

【讨论】:

    【解决方案2】:

    我不知道这是不是你要找的东西

    SELECT assemblyid,count(partdefid)
    FROM parts
    WHERE partdefid=2
    GROUP BY partdefid,assemblyid
    HAVING COUNT(partdefid)=1
    

    【讨论】:

    • 谢谢!但是,将其粘贴到访问查询窗口中会出现以下错误:“您的查询不包括指定的表达式'描述'作为聚合函数的一部分”
    • 哦对不起,我错了,我修改了答案
    猜你喜欢
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多