首页 > 解决方案 > SELECT 查询毫秒访问

问题描述

我有一个 ms 访问表,如下所示:

用户名 | PC_类型
抢 | 桌面
弗兰克 | 笔记本电脑
抢劫 | 笔记本电脑
Lindesy | ThinCient
标记 | 桌面
保罗 | 桌面
保罗 | 瘦客户端

如何创建仅返回既没有 ThinClient 也没有笔记本电脑的用户的 SELECT 查询?
我试过:

SELECT DISTINCT UserName, PC_Type 
From Table 
GROUP BY UserName, PC_Type
HAVING PC_Type <> "ThinClient" AND PC_Type <> "Laptop"  
[or where PC_Type Not In ("ThinClient", "Laptop")]

但这不会过滤排除已经拥有笔记本电脑(或 ThinClient)的用户,因为它会返回例如已经拥有笔记本电脑的“ROB | Desktop”(或已经拥有 ThinClient 的“Paul | Desktop”)。我尝试查询以查找重复项、差异查询、交叉查询,但我开始感到困惑。我试图创建子查询或分区查询,但我不知道我是否做对了。

任何人都可以帮我解决这个问题,好吗?我希望从查询中只返回 Mark。

标签: sqlms-access

解决方案


您可以使用聚合和HAVING

SELECT UserName
From Table 
GROUP BY UserName
HAVING SUM(IIF(PC_Type IN ("ThinClient", "Laptop"), 1, 0) = 0 ;

推荐阅读