繁体   English   中英

联接子查询上的Oracle语法错误

[英]Oracle syntax error on JOIN to sub-query

下面的代码已经是精简示例,仍然会产生语法错误:

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

“ rm”内联视图无法访问外部查询列,因此无法在内部查询中引用r.user_idr.reading_time 您必须在外部进行过滤:

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
      ) rm   
ON rm.user_id=r.user_id 
AND rm.reading_time < r.reading_time;

您不能从JOIN的一部分引用到另一部分。

你在找这个吗?

SELECT r.user_id, r2.reading_time start_time, r.reading_time end_time
FROM Readings r 
INNER JOIN Readings r2 
ON r.user_id=r2.user_id
   AND r2.reading_time < r.reading_time;

SQL字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM