问题
让我给你查询中使用的表的描述
desc takes;
Name Null Type
--------- -------- -----------
ID NOT NULL VARCHAR2(5)
COURSE_ID NOT NULL VARCHAR2(8)
SEC_ID NOT NULL VARCHAR2(8)
SEMESTER NOT NULL VARCHAR2(6)
YEAR NOT NULL NUMBER(4)
GRADE VARCHAR2(2)
------------------------------------
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
desc course;
Name Null Type
--------- -------- -----------------
COURSE_ID NOT NULL VARCHAR2(8)
TITLE VARCHAR2(50)
DEPT_NAME VARCHAR2(20)
CREDITS NUMBER(2)
-------------------------------------
查询 1:
select course.COURSE_ID from course join takes on course.COURSE_ID=takes.COURSE_ID;
它工作正常。
但我对其他以某种方式相关的查询有疑问。
查询 2:
select course.COURSE_ID from course join takes using(COURSE_ID);
我得到的错误是
Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-25154: column part of USING clause cannot have qualifier 25154. 00000 - "column part of USING clause cannot have qualifier" *Cause: Columns that are used for a named-join (either a NATURAL join or a join with a USING clause) cannot have an explicit qualifier. *Action: Remove the qualifier.
虽然如果我在选择后更改 course.course_ID 以外的属性,例如 course.title 为:
select course.title from course join takes using(COURSE_ID);
我得到了预期的输出,有什么错误吗?
最佳答案
错误消息说明了一切:使用 USING (COURSE_ID)
时,您的行不包含 course.COURSE_ID
和 takes.COURSE_ID
不再是了,但只是一个 COURSE_ID
。
这是无效的:
select course.COURSE_ID from course join takes using(COURSE_ID);
这是有效的:
select COURSE_ID from course join takes using(COURSE_ID);
关于SQL:使用 vs on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43956604/