查询Advisor表指定条件记录无返回结果技术求助
问题分析与修正方案
你的查询未返回数据,核心是逻辑条件错误,同时存在字段名匹配问题,以下是修正后的查询和问题拆解:
修正后的SQL语句
SELECT * FROM Advisor WHERE -- 第一类条件:AdvisorName为Julianne Frank且OpenedOn年份小于2022 (AdvisorName = 'Julianne Frank' AND YEAR(OpenedOn) < 2022) -- 第二类条件:ReviewedOn为NULL,用OR分隔两类独立条件 OR ReviewedOn IS NULL;
原查询的问题点
- 逻辑运算符错误:你要检索的是两类任意满足其一的记录,但原查询用
AND连接所有条件,要求同时满足所有条件,这大大缩小了匹配范围,甚至没有符合的记录。必须用OR分隔两个条件组,并用括号明确条件优先级。 - 字段名不匹配:原查询中使用了
AdvisorLName = 'Franke',但你说明表字段是AdvisorName(存储全名"Julianne Frank"),要么是你误写了字段名,要么是实际表结构中名字拆分存储,但根据你的描述,应该直接匹配AdvisorName = 'Julianne Frank'。 - 字段名疑似笔误:你提到表包含
OrderedOn字段,但查询中用了OpenedOn,如果表中实际没有OpenedOn,需要替换为OrderedOn,否则会报错或无结果。
额外验证建议
如果修正后仍无结果,可分步排查:
- 单独执行
SELECT * FROM Advisor WHERE AdvisorName = 'Julianne Frank' AND YEAR(OpenedOn) < 2022;,确认是否存在这类记录。 - 单独执行
SELECT * FROM Advisor WHERE ReviewedOn IS NULL;,确认是否存在ReviewedOn为NULL的记录。 - 检查
OpenedOn字段是否有有效值,是否存在年份小于2022的记录,避免因字段值为空导致YEAR()函数返回NULL,无法匹配<2022。
内容的提问来源于stack exchange,提问作者usama hussain
相关产品推荐
相关产品推荐

