我想在一个查询中获得一个帖子以及与该帖子相关联的第一条评论。这是我在PostgreSQL中的操作方式:
SELECT p.post_id, (select * from (select comment_body from comments where post_id = p.post_id order by created_date asc) where rownum=1 ) the_first_comment FROM posts p
而且效果很好。
但是,在Oracle中,我收到错误ORA-00904 p.post_id:无效的标识符。
对于一个子选择它似乎工作正常,但是由于我需要使用rownum(在Oracle中没有限制/偏移量)这一事实,我无法仅使用一个选择。
我在这里做错了什么?
不,Oracle不会将嵌套在一个以上深度的子查询关联起来(也不是MySQL)。
Oracle
MySQL
这是一个众所周知的问题。
用这个:
SELECT p.post_id, c.* FROM posts JOIN ( SELECT c.*, ROW_NUMBER() OVER (PARTITION BY post_id ORDER BY created_date ASC) AS rn FROM comments c ) c ON c.post_id = p.post_id AND rn = 1