ms 访问,需要获取具有不同列的所有行

Posted

技术标签:

【中文标题】ms 访问,需要获取具有不同列的所有行【英文标题】:ms access, need to get all rows with a distinct column 【发布时间】: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 【参考方案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

【讨论】:

谢谢!但是,将其粘贴到访问查询窗口中会出现以下错误:“您的查询不包括指定的表达式'描述'作为聚合函数的一部分” 哦对不起,我错了,我修改了答案

以上是关于ms 访问,需要获取具有不同列的所有行的主要内容,如果未能解决你的问题,请参考以下文章

读取文件然后将文件写入 SQL Server BLOB 列的代码,生成具有不同字节的文件

如何使用sql从具有不同列的两个表中获取不同的记录

自动表格填写 ms 访问

在 Teradata SQL 中查找给定列的哪些行具有不同的值

如何选择配置单元中具有不同 2 列的配置单元中的所有值

单个查询从具有不同列的多个表中获取记录