【发布时间】:2011-12-02 07:40:41
【问题描述】:
我收到“值太多”错误,我不知道如何处理它。问题从第一个嵌套的 SELECT 开始
SELECT p.name, p.phone_number
FROM person p WHERE
(SELECT ks.title, ks.ks_code
FROM required_skills rs JOIN knowledge_skills ks USING (ks_code)
WHERE rs.pos_code = 'CS1')
IN (SELECT ks.title, ks.ks_code
FROM courses_taken ct JOIN course_learning_units clu
USING (c_code) JOIN learning_unit_skills lus USING (lu_code)
JOIN knowledge_skills ks USING (ks_code))
我查了info about this error,我相信这是因为 WHERE 中的子查询返回了太多列。表格数据如下。但是我怎样才能减少它呢?我感谢任何指点,谢谢
所需技能
POS_CODE VARCHAR2(10 BYTE) Yes 1
KS_CODE VARCHAR2(10 BYTE) Yes 2
learning_unit_skills
LU_CODE VARCHAR2(10 BYTE) Yes 1
KS_CODE VARCHAR2(10 BYTE) Yes 2
人
PER_ID NUMBER(38,0) No 1
NAME VARCHAR2(255 BYTE) Yes 2
STREET VARCHAR2(255 BYTE) Yes 3
CITY VARCHAR2(60 BYTE) Yes 4
ZIP_CODE VARCHAR2(60 BYTE) Yes 5
PHONE_NUMBER VARCHAR2(255 BYTE) Yes 6
GENDER VARCHAR2(6 BYTE) Yes 7
课程学习单元
C_CODE VARCHAR2(10 BYTE) Yes 1
LU_CODE VARCHAR2(10 BYTE) Yes
参加的课程
C_CODE VARCHAR2(10 BYTE) Yes 1
PER_ID NUMBER(38,0) Yes 2
【问题讨论】:
-
在您的查询中,在第一个 where 条件没有提到字段或列之后
-
你的其他表和
person有什么关系? -
@MichałPowaga - 谢谢 - 是的,这是在课程表上
-
子查询(在 IN 运算符之前)不会返回“太多列”,但会返回太多行。
标签: sql oracle oracle11g ora-00913