MySQL如何查询所有关联用户last_login全为NULL的账户ID
可直接使用的单条查询语句
方案1:分组聚合实现(写法最简,适合仅需获取account_id的场景)
SELECT account_id FROM Users GROUP BY account_id HAVING COUNT(last_login) = 0;
逻辑说明:COUNT(字段) 统计时会自动跳过NULL值,因此当某个账户下所有用户的last_login都为NULL时,统计结果就为0,正好匹配筛选条件。
方案2:NOT EXISTS关联实现(性能更优,支持扩展获取账户表其他字段)
如果需要确保返回的account_id在Accounts表中真实存在,或者需要同时返回账户名称等信息,可以用以下写法:
SELECT a.account_id, a.account_name FROM Accounts a WHERE NOT EXISTS ( SELECT 1 FROM Users u WHERE u.account_id = a.account_id AND u.last_login IS NOT NULL );
逻辑说明:子查询会查找指定账户下是否存在有登录记录的用户,只要存在就会被NOT EXISTS过滤掉,最终只保留所有用户都没有登录记录的账户。
两种写法执行后都会返回你预期的结果678910。
内容的提问来源于stack exchange,提问作者Kobi Versano
相关产品推荐
相关产品推荐

