sql - ORA-00913 的嵌套选择错误:值太多
问题描述
完全披露:绝对是新手,我在学习。我编写了以下选择例程,该例程会引发 ORA-00913:第 13 行第 18 列的值过多错误(地址信息的第二个嵌套选择语句)。我已经搜索并阅读了最简单的建议(确保您的括号匹配或查找拼写错误)以明确查看 WHERE 子句,使用 AS 或其他建议,但到目前为止还没有。
select distinct
(select u.misc_data
from ps_name_miscnmbr u
where (u.misc_id = 'RFID') and u.name_id = cn.name_id) RFID,
cn.dflt_id StudentIdNumber,
cn.first_name FirstName,
cn.last_name LastName,
cn.middle_name MiddleName,
'pot: 100' as CollegeCode,
to_char (cn.date_birth, 'YYYY-MM-DD') DateOfBirth,
p.area_code,
p.phone_no,
(select a.line1 StreetAddress1,
a.line2 StreetAddress2,
a.city City,
a.stat_id ST,
a.postal Zip
from co_v_dflt_addr a
where (a.adty_id in ('LOCL','HOME') and a.name_id = cn.name_id)),
e.email_address Email
from co_name cn,
sr_v_enroll s,
co_name_demo d,
co_v_name_email e,
co_v_name_phone1 p
where s.term_id in ('201701', '201702', '201703')
and s.name_id = cn.name_id
and d.name_id = cn.name_id
and e.name_id = cn.name_id
and p.name_id = cn.name_id
order by LastName
当我为地址隔离第二个嵌套的 Select 语句并自行运行它时,它会执行并生成我期望的列/记录。
(select distinct cn.name_id,
a.line1 StreetAddress1,
a.line2 StreetAddress2,
a.city City,
a.stat_id State,
a.postal Zip
from co_v_dflt_addr a,
co_name cn
where (a.adty_id in ('LOCL','HOME') and a.name_id = cn.name_id))
当我注释掉地址的整个选择子查询时,例程的其余部分也会执行并生成我期望的列/记录。
select distinct
(select u.misc_data
from ps_name_miscnmbr u
where (u.misc_id = 'RFID') and u.name_id = cn.name_id) RFID,
cn.dflt_id StudentIdNumber,
cn.first_name FirstName,
cn.last_name LastName,
cn.middle_name MiddleName,
'pot: 100' as CollegeCode,
to_char (cn.date_birth, 'YYYY-MM-DD') DateOfBirth,
p.area_code,
p.phone_no,
e.email_address Email
from co_name cn,
sr_v_enroll s,
co_name_demo d,
co_v_name_email e,
co_v_name_phone1 p
where s.term_id in ('201701', '201702', '201703')
and s.name_id = cn.name_id
and d.name_id = cn.name_id
and e.name_id = cn.name_id
and p.name_id = cn.name_id
order by LastName
有人可以在这里为新手提供有用的提示吗?我一直在不停地尝试那些无法让我到达终点的事情。
谢谢
解决方案
您在 select 语句中的子查询可能返回太多行。当您使用这样的子查询时,它只需要返回一行。
在这种情况下,您可能应该将表连接到查询的其余部分,如果可能没有地址返回,则使用外连接。但是,如果它们同时具有“LOCL”和“HOME”地址,这将带回两行。该设计选择取决于您。
推荐阅读
- sql - 循环矩阵(sql)的旋转
- opencv - 访问 cvLoadImage() 函数的正确头文件
- javascript - 没有从 NodeJS 中的 MySQL 查询中获取返回对象
- c# - 通过一笔交易选择和更新
- node.js - 如何使用对话流从 RESTful API 获取数据
- python - 像 C# 一样创建 Python 类
- php - 如何通过多行选择以x开头并以y结尾的子字符串并替换它
- php - 使用 Drive Api (PHP) 从特定文件夹获取文件
- google-sheets - Google 表格返回已发布文档的随机版本
- rest - 使用 ALM API 11.52 更新测试实例时出错