select a.id,a.date from A a left join B b on a.id=b.id and a.date=(select max(date) from B where id=a.id )
这样的语句 查询报错 a column may not be outer-joined to a subquery 说一列在外连接上不能用子查询
但是我这条语句在一个数据库上运行是可以的 但是导出到另一个数据库这个就报错了
跪求各位大虾给个解决方案 或告诉我这里是什么出了问题 谢谢大家了
在下分不多 全部奉上
这样的语句 查询报错 a column may not be outer-joined to a subquery 说一列在外连接上不能用子查询
但是我这条语句在一个数据库上运行是可以的 但是导出到另一个数据库这个就报错了
跪求各位大虾给个解决方案 或告诉我这里是什么出了问题 谢谢大家了
在下分不多 全部奉上
我觉得可能是导入数据库 oracle的日期格式不正确
但是我看了下表里面的数据 格式又是一样的
郁闷了
你写的SQL有问题..
不明白select max(date) from B where id=a.id 你这样是什么意思.
逻辑有问题.
FROM a, b
WHERE a.ID(+) = b.ID AND a.DATE = (SELECT MAX (b.DATE)
FROM a, b
WHERE b.ID = a.ID)
我现在建立一个视图 我想把所有的用户发的帖子全部呈现在视图中 并且查出这个帖子的最后浏览人
但是我发的这个帖子不一定有人浏览过 所以我用left join
我的 max(date) 就是要查出浏览过这个帖子的最后一个用户
(
select id bid,aid,browseDate from b join
(
select aid aid1,max(browseDate) lastBrowseDate,userid from b group by aid
) bb on aid=bb.aid1 and browseDate=lastBrowseDate
) cc on id=cc.aida表为帖子表,字段id,title(帖子标题),等等等
b表为浏览表,字段id,aid(a表id),browsDate(浏览时间),userid(用户id),等等等
思路:
1、根据aid分组找出b表浏览时间的最大记录 select aid aid1,max(browseDate) lastBrowseDate,userid from b group by aid 设为“#table1”
2、找出包含最大浏览时间的记录的其它所有字段(或所需的字段) ,要用别名来避免字段名字冲突
select id bid,aid,browseDate from b join #table1 bb on aid=bb.aid1 and browseDate=lastBrowseDate
3、a表左连接第2步的结果
ID TD
---------- ----------
1 26-4月 -08
1 25-4月 -08
2 22-4月 -08
2 21-4月 -08
2 26-4月 -08SQL> select a.id,a.td from a left join b on a.id=b.id;
ID TD
---------- ----------
1 26-4月 -08
1 26-4月 -08
2 25-4月 -08
2 25-4月 -08
2 25-4月 -08
SQL>select a.id,a.td from a left join b on a.id=b.id
and a.td = (select max(td) from b where b.id=a.id)
SQL> / ID TD
---------- ----------
1 26-4月 -08
1 26-4月 -08
2 25-4月 -08我试了一下,这样写是没有问题的.
" a column may not be outer-joined to a subquery "的错误号是什么?