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

修改SQL查询:替换权限条件为关联授权表的活跃状态筛选用户

完善关联auths表的活跃用户查询SQL

没问题,我来帮你搞定这个查询需求!根据你的描述,现在需要把原来依赖permissions字段的判定逻辑,改成检查用户自身活跃,或者关联的auths记录中有活跃状态的。这里给你两种靠谱的实现方案:

方案一:LEFT JOIN + DISTINCT

这种方式用左连接保留所有用户,再通过去重避免重复结果:

SELECT DISTINCT users.* 
FROM users 
LEFT JOIN auths ON auths.user_id = users.id 
WHERE users.active = 1 OR auths.active = 1;
  • LEFT JOIN确保不管用户有没有对应的auths记录,都能被纳入查询范围
  • DISTINCT用来避免同一个用户因为有多条活跃的auths记录而被重复返回
  • WHERE条件直接覆盖两种活跃判定:用户自身活跃,或者关联的auths记录活跃

方案二:EXISTS子查询(推荐)

如果你的auths表数据量比较大,这种方式通常效率更高,因为它不需要处理连接后的重复数据:

SELECT users.* 
FROM users 
WHERE users.active = 1 
OR EXISTS (
    SELECT 1 
    FROM auths 
    WHERE auths.user_id = users.id 
    AND auths.active = 1
);
  • EXISTS子查询会快速检查当前用户是否存在至少一条活跃的auths记录,只要找到符合条件的就会停止查询,性能更优
  • 逻辑上和方案一完全一致,但避免了JOIN操作可能带来的重复数据问题

两种方案都能满足你的需求:当用户自身活跃,或者有活跃的auths关联记录时,就会被判定为活跃用户,完全不再依赖permissions字段啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:25:38