You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL语句查询未关联任何设备的用户?

查询未拥有任何设备的用户的SQL语句

我们需要从users表中筛选出**未在devices表中出现过对应user-id**的用户,也就是没有任何设备的用户,以下是几种常用的实现方式:

方式一:LEFT JOIN + IS NULL(推荐,标准SQL语法,性能与可读性俱佳)

SELECT users.user-name
FROM users
LEFT JOIN devices ON users.user-id = devices.user-id
WHERE devices.user-id IS NULL;

逻辑说明:LEFT JOIN会保留users表的所有记录,将其与devices表中匹配的记录关联;没有匹配到设备的用户,对应的devices表字段会为NULL,通过WHERE devices.user-id IS NULL即可筛选出目标用户。

方式二:NOT IN

SELECT user-name
FROM users
WHERE user-id NOT IN (SELECT DISTINCT user-id FROM devices WHERE user-id IS NOT NULL);

逻辑说明:子查询先提取devices表中所有非空的user-id(避免NOT IN遇到NULL时返回空结果),再筛选users表中不在该集合内的用户。

方式三:NOT EXISTS

SELECT user-name
FROM users
WHERE NOT EXISTS (SELECT 1 FROM devices WHERE devices.user-id = users.user-id);

逻辑说明:逐条检查users表的用户,若在devices表中找不到对应user-id的记录,则该用户会被选中。

与示例风格一致的旧式写法(不推荐,仅适配部分数据库)

如果你需要和提供的「拥有设备用户查询」使用相同的旧式逗号连接风格,可使用以下Oracle专属的外连接语法(其他数据库可能不支持):

SELECT users.user-name
FROM users, devices
WHERE users.user-id = devices.user-id(+)
AND devices.user-id IS NULL;

内容的提问来源于stack exchange,提问作者derTobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:48:17