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

如何查询e_employer表中仅关联1个e_user用户的雇主数据

可行实现方案

方案1:分组统计后关联查询(性能最优,适配绝大多数场景)

核心逻辑是先统计每个雇主关联的用户数量,筛选出仅关联1个用户的雇主ID,再关联雇主表获取完整信息:

SELECT emp.*
FROM e_employer emp
INNER JOIN (
    -- 统计所有仅关联1个用户的雇主ID
    SELECT employer_id
    FROM e_user
    GROUP BY employer_id
    HAVING COUNT(user_id) = 1
) user_filter ON emp.employer_id = user_filter.employer_id;

如果需要同时返回该雇主关联的唯一用户信息,可调整查询字段:

SELECT emp.employer_id, emp.employername, u.user_id, u.username
FROM e_employer emp
INNER JOIN e_user u ON emp.employer_id = u.employer_id
INNER JOIN (
    SELECT employer_id
    FROM e_user
    GROUP BY employer_id
    HAVING COUNT(user_id) = 1
) user_filter ON emp.employer_id = user_filter.employer_id;

方案2:窗口函数实现(适合需要保留明细的场景)

如果后续需要扩展统计逻辑,可使用窗口函数实现,代码更简洁:

SELECT employer_id, employername, user_id, username
FROM (
    SELECT 
        emp.employer_id,
        emp.employername,
        u.user_id,
        u.username,
        -- 按雇主分组统计关联用户数
        COUNT(u.user_id) OVER(PARTITION BY emp.employer_id) AS user_count
    FROM e_employer emp
    INNER JOIN e_user u ON emp.employer_id = u.employer_id
) temp
WHERE temp.user_count = 1;

补充说明

  • 以上两种方案默认仅返回有且仅有1个关联用户的雇主,若需要包含无关联用户的雇主,将INNER JOIN改为LEFT JOIN,同时调整筛选条件为user_count = 0 OR user_count = 1即可
  • 统计用户数时建议使用COUNT(user_id)而非COUNT(*),避免e_user表中employer_id为空的脏数据干扰统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:24:02