【发布时间】:2013-02-13 22:11:38
【问题描述】:
以下代码已经是一个简化的示例,但仍然会产生语法错误:
ORA-00904: "R"."READING_TIME": invalid identifier
SELECT r.user_id, rm.reading_time start_time, r.reading_time end_time
FROM Readings r
INNER JOIN (
SELECT r2.user_id, r2.reading_time, r2.x, r2.y
FROM Readings r2
WHERE r2.user_id=r.user_id and
r2.reading_time < r.reading_time
) rm
ON r.user_id=rm.user_id;
为什么内部查询与外部查询的别名有问题?
链接到我的小提琴:http://sqlfiddle.com/#!4/0d4b5/21
UPDATE:
我通过执行自连接并将相关查询移动到 ON 子句来解决问题。
更新了整个脚本的小提琴:http://sqlfiddle.com/#!4/39032/10
【问题讨论】:
-
因为不能加入子查询。这是 Hamlet 纠正的语法错误。
-
@ypercube - 你是对的。我正在将该查询从 SQL Server 2008 重写为 Oracle 11g。
标签: sql join oracle11g subquery