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

SQL Server多列关联两表,过滤关联双方GROUP非空记录的方法

解决SQL Server中关联双方GROUP均非空的查询需求

你的核心需求是筛选出Table2中两端关联实体(FROM和TO对应的Table1记录)的GROUP字段都不为NULL的关联关系,原查询的问题在于只验证了关联其中一端的GROUP状态,无法确保另一端的GROUP也非空。

修改后的查询语句

SELECT 
    t2.ID AS RelationID,
    t_from.ID AS FromID, t_from.NAME AS FromName, t_from.[GROUP] AS FromGroup,
    t_to.ID AS ToID, t_to.NAME AS ToName, t_to.[GROUP] AS ToGroup
FROM Table2 t2
-- 关联FROM对应的实体
INNER JOIN Table1 t_from ON t2.[FROM] = t_from.ID
-- 关联TO对应的实体
INNER JOIN Table1 t_to ON t2.TO = t_to.ID
-- 同时过滤两端GROUP非空
WHERE t_from.[GROUP] IS NOT NULL 
  AND t_to.[GROUP] IS NOT NULL;

逻辑说明

  1. 通过两次INNER JOIN分别关联Table2的FROM和TO字段到Table1,分别获取关联关系两端的实体信息
  2. 在WHERE子句中同时校验两端实体的GROUP字段都不为NULL,确保只有符合要求的关联关系被保留

针对示例数据的预期结果

执行上述查询后,会返回Table2中ID为1、2、3的三条关联记录,这三条记录的两端实体(ID1/2、1/3、2/3)的GROUP均为Group1;而涉及ID4(GROUP为NULL)的关联记录(Table2 ID4、5、6)会被过滤掉。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:03:20