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

使用WHERE EXISTS从两表获取多列时的NULL值问题(SQL Server)

SQL Server中EXISTS查询成绩字段返回NULL的解决方法

我需要对比SQL Server中两个表的姓名列,输出TABLE_1_Today's_List中**存在/不存在于TABLE_2_Combined_Scores(且Grade=10)**的学生及其对应成绩,但当前使用WHERE EXISTS的查询语句中,所有成绩字段均返回NULL值。

表结构

TABLE_1_Today's_List

Name1
Kevin
James
Roger
Bob

TABLE_2_Combined_Scores

Name2GradeScore_1Score_2Score_3Score_4
Kevin1025341245
Bob925236587
Roger1043542598
James1243542598

现有错误查询脚本

查询同时存在于两表且Grade=10的学生

SELECT c.Name1, Score_1,Score_2,Score_3,Score_4    
FROM TABLE_1_Today's_List c   
WHERE EXISTS (SELECT c2.Name2,Score_1,Score_2,Score_3,Score_4    
FROM TABLE_2_Combined_Scores c2    
WHERE c2.Name2 = c.Name1
and Grade = '10');

问题:能正确匹配学生,但Score_1至Score_4均返回NULL。

查询仅存在于表1(TABLE_2中无对应Name且Grade=10)的学生

SELECT c.Name1, Score_1,Score_2,Score_3,Score_4
FROM TABLE_1_Today's_List c
WHERE NOT EXISTS (SELECT c2.Name2,Score_1,Score_2,Score_3,Score_4
FROM TABLE_2_Combined_Scores c2
WHERE c2.Name2 = c.Name1
and Grade = '10');

问题:能正确匹配学生,但成绩字段均返回NULL。

问题原因

成绩字段Score_1至Score_4仅存在于TABLE_2_Combined_Scores中,现有查询仅从TABLE_1_Today's_List选取数据,未关联TABLE_2获取成绩,因此返回NULL。WHERE EXISTS仅用于判断存在性,不会自动关联表字段。

解决方案

1. 查询同时存在于两表且Grade=10的学生及成绩

使用INNER JOIN关联两表,直接从TABLE_2获取成绩:

SELECT c.Name1, c2.Score_1, c2.Score_2, c2.Score_3, c2.Score_4
FROM TABLE_1_Today's_List c
INNER JOIN TABLE_2_Combined_Scores c2
    ON c.Name1 = c2.Name2
WHERE c2.Grade = '10';

执行结果(符合期望输出):

Name1Score_1Score_2Score_3Score_4
Kevin25341245
Roger43542598

2. 查询仅存在于表1(TABLE_2中无对应Name且Grade=10)的学生及成绩

使用LEFT JOIN关联,筛选TABLE_2中无匹配记录的行,成绩字段会自然返回NULL(符合需求):

SELECT c.Name1, c2.Score_1, c2.Score_2, c2.Score_3, c2.Score_4
FROM TABLE_1_Today's_List c
LEFT JOIN TABLE_2_Combined_Scores c2
    ON c.Name1 = c2.Name2
    AND c2.Grade = '10'
WHERE c2.Name2 IS NULL;

执行结果:

Name1Score_1Score_2Score_3Score_4
JamesNULLNULLNULLNULL
BobNULLNULLNULLNULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:15:34