按组选择同一列中的唯一值

3

如果你在使用Microsoft Access时遇到了难以获得所需结果的困难。我有两个链接的表,它们由[bed]进行内部连接,并且两个表中都具有以下数据。我希望选择[room number],该房间号码存在[gender]不匹配(每个房间号码有超过一个独特值)。我已经在stackoverflow上搜索了很久,但似乎没有找到任何可以同时进行分组和按组[room number]进行选择的方法。

Table 1
-----------------
Room Number | Bed

101 | 101a
101 | 101b
101 | 101c
102 | 102a
102 | 102b
103 | 103a
103 | 103b


Table 2
-----------------
Bed | Gender

101a | Male
101b | Male
101c | Female
102a | Male
102b | Male
103a | Female
103b | Undefined

使用这个数据集,我期望它返回101和103房间及其对应的性别。

SQL查询

SELECT ROOM_NO FROM RMGT_T_ROOMS INNER JOIN RMGT_T_ROOM_CONFIGS ON RMGT_T_ROOMS.PK_BED_SPACE = RMGT_T_ROOM_CONFIGS.CK_BED_SPACE GROUP BY RMGT_T_ROOMS.FK_ROOM_NO HAVING COUNT(DISTINCT GENDER) > 1


请在此问题中添加您的查询 :) - dcreight
添加了查询到问题。 - Forrest
2个回答

2

内连接和分组如何处理?

select t1.room
from t1 inner join
     t2
     on t1.bed = t2.bed
group by t1.room
having min(gender) <> max(gender);

如果你知道只有两种性别,你可以在

这似乎是有效的,但它只返回最小的 [gender] 值而不是两个 [gender] 值。 - Forrest

2
你可以通过床的id加入该表格,并计算不同性别的数量:
SELECT   room_number
FROM     t1
JOIN     t2 ON t1.bed = t2.bed
GROUP BY room_number
HAVING   COUNT(DISTINCT gender) > 1

这是我尝试使用distinct的方式,但它会出现缺少运算符的错误。 - Forrest
MS Access 不支持 COUNT(DISTINCT) - Gordon Linoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接