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

如何查询sm_user_id=1的用户未加入的站点列表(基于两表关联)

用户未加入站点列表的SQL实现方案

核心筛选逻辑

匹配site_details全量站点,排除所有在site_members表中已经关联sm_user_id = 1的站点记录,三种可直接落地的查询写法如下:

  • 写法1:使用NOT EXISTS子查询(大数据量场景推荐,性能稳定,无额外去重开销)
SELECT sd.site_id, sd.sitename
FROM site_details sd
WHERE NOT EXISTS (
    SELECT 1
    FROM site_members sm
    WHERE sm.sm_site_id = sd.site_id
      AND sm.sm_user_id = 1
);
  • 写法2:使用左连接匹配空值
SELECT DISTINCT sd.site_id, sd.sitename
FROM site_details sd
LEFT JOIN site_members sm
  ON sd.site_id = sm.sm_site_id
 AND sm.sm_user_id = 1
WHERE sm.sm_site_id IS NULL;

注:加DISTINCT是为了规避site_members内重复关联数据带来的结果行重复问题。

  • 写法3:使用NOT IN子查询(需规避空值陷阱)
SELECT site_id, sitename
FROM site_details
WHERE site_id NOT IN (
    SELECT sm_site_id
    FROM site_members
    WHERE sm_user_id = 1
      AND sm_site_id IS NOT NULL
);

注:如果子查询返回的sm_site_id存在NULL值,NOT IN会导致全查询返回空结果,必须在子查询内加上非空判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 21:45:04