SQL语法错误,为“0”;加上;条款
在WHERE子句中使用WITH alias时遇到奇怪的问题。 问题SQL语句:SQL语法错误,为“0”;加上;条款,sql,oracle,with-statement,where-in,Sql,Oracle,With Statement,Where In,在WHERE子句中使用WITH alias时遇到奇怪的问题。 问题SQL语句: WITH CROOM AS (SELECT id FROM classroom WHERE floor = 1) SELECT DISTINCT teacher_id FROM timetable WHERE classroom_id IN CROOM; 错误是ORA-00904:“CROOM”:无效标识符 虽然这两个语义相似的语句都非常有效 SELECT DISTINCT teacher_id FROM time
WITH CROOM AS (SELECT id FROM classroom WHERE floor = 1)
SELECT DISTINCT teacher_id
FROM timetable
WHERE classroom_id IN CROOM;
错误是ORA-00904:“CROOM”:无效标识符
虽然这两个语义相似的语句都非常有效
SELECT DISTINCT teacher_id
FROM timetable
WHERE classroom_id IN (SELECT id FROM classroom WHERE floor = 1);
WITH CROOM AS (SELECT id FROM classroom WHERE floor = 1)
SELECT DISTINCT T.teacher_id
FROM timetable T JOIN CROOM ON (T.classroom_id = CROOM.id);
为什么它不能识别WHERE中的别名,而在FROM子句中接受它呢?您应该使用CROOM作为表。例如,您可以编写:
WITH CROOM AS (SELECT id FROM classroom WHERE floor = 1)
SELECT DISTINCT teacher_id
FROM timetable
WHERE classroom_id IN (select id from CROOM);