存储过程子查询返回多行报错,期望生成指定重复行结果
解决SQL子查询返回多行的报错并实现期望结果
报错原因
你写的Developer字段子查询返回了多个值(比如ApplicationId=100对应两个Developer记录),但用=将子查询结果赋值给字段时,SQL只允许子查询返回单个值,因此触发报错:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
解决方案
改用**表连接(JOIN)**的方式关联三个表,自然生成Name重复、Developer不同的多行结果,替代原来的子查询写法:
SELECT r.Name, pd.Description AS Developer -- 如需Mobile、Title字段,可在此处添加对应的关联查询逻辑 FROM Records r JOIN Company c ON r.ApplicationId = c.Id JOIN ParameterDeveloper pd ON c.WorkId = pd.Id -- 若仅需Sky的结果,可添加WHERE条件过滤 WHERE r.Name = 'Sky'
逻辑验证
结合你的表数据:
- Records表中Sky的ApplicationId为100
- Company表中Id=100对应的WorkId是100
- ParameterDeveloper表中Id=100对应两条记录:Oracle和Ibm
通过JOIN关联后,会生成两条Name为Sky的记录,分别对应两个Developer值,与你期望的结果完全匹配。
内容的提问来源于stack exchange,提问作者Aries
相关产品推荐
相关产品推荐

