首页 > 解决方案 > MS Access 中的 SELECT(DISINCT)

问题描述

我在 MS Access 类型的问题中的其他 SELECT(DISINCT) 中找不到问题的解决方案,我已经为此苦苦挣扎了好几个小时;

我有一个包含两列的照片表: PhotoTypeIdPatientId。每个患者都可以多次制作多种类型的照片。

例子:

PhotoTypeId,PatientId  
13,1050  
14,1050  
13,1050  
13,1051  
13,1054

描述:
患者#1050有类型的照片13并拍摄,14而患者只有类型的照片。#1051#105413

我想找到的是为最独特的患者拍摄的照片类型。在上面的示例中,它是照片类型13,因为它是针对 3 个不同的患者(#1050两次#1051,,,#1054

我必须在 MS Access 中执行此操作,并且我想使用 SQL 执行此操作。我试过类似的东西:

SELECT PhotoId, COUNT(DISTINCT PatientId)
FROM Photos
GROUP BY PhotoId;

但是 MS Access 不支持 COUNT(DISTINCT x) 语法;怎么做?

标签: sqlms-accesscountms-officedistinct

解决方案


MS Access 不支持count(disitnct)。但你可以这样做:

select top 1 photoid, count(*)
from (select distinct photoid, patientid
      from photos
     ) as pp
group by photoid
order by count(*) desc;

MS Access 将top 1其视为top 1 with ties. 如果您只想要一行,请更改order by

select top 1 photoid, count(*)
from (select distinct photoid, patientid
      from photos
     ) as pp
group by photoid
order by count(*) desc, photoid;

推荐阅读