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

如何查询用户未加入的网络?基于多表数据校验

解决方案:获取用户未加入的网络列表

嘿,我来帮你搞定这个需求!要找出userID=9的用户没加入的网络,你可以用两种常见的SQL写法来实现,我都给你列出来:

方法一:LEFT JOIN + IS NULL

这种方法通过左连接关联两张表,筛选出没有匹配记录的网络:

$networks = $this->db->query("
    SELECT n.companyname, n.description, n.commision 
    FROM networks n
    LEFT JOIN usernetworks un ON n.id = un.networkid AND un.userID = '9'
    WHERE un.networkid IS NULL
");

逻辑解释:

  • LEFT JOIN会保留networks表的所有记录,同时匹配usernetworks中用户ID为9且networkid对应的记录
  • 当某个网络没有被用户9加入时,un.networkid会是NULL,通过WHERE un.networkid IS NULL就能筛选出这些未加入的网络

方法二:NOT EXISTS子查询

这种方法逻辑更直观,直接检查当前网络是否存在于用户的已加入列表中:

$networks = $this->db->query("
    SELECT companyname, description, commision 
    FROM networks n
    WHERE NOT EXISTS (
        SELECT 1 
        FROM usernetworks un 
        WHERE un.networkid = n.id AND un.userID = '9'
    )
");

逻辑解释:

  • 子查询会检查当前networks的id是否存在于usernetworks中(且用户ID为9)
  • NOT EXISTS会筛选出那些子查询没有找到匹配记录的网络,也就是用户未加入的网络

额外小提示:

  • 确保networks.id和usernetworks.networkid的字段类型一致(比如都是INT),避免隐式类型转换拖慢查询
  • 如果userID是数字类型,建议把'9'改成9,去掉单引号更符合数据类型规范,也能优化查询效率

内容的提问来源于stack exchange,提问作者Scott O'connor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:35:29