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 说一列在外连接上不能用子查询 
但是我这条语句在一个数据库上运行是可以的 但是导出到另一个数据库这个就报错了 
跪求各位大虾给个解决方案 或告诉我这里是什么出了问题 谢谢大家了 
在下分不多 全部奉上

解决方案 »

  1.   

    没人回答哦 我先自己顶下  
    我觉得可能是导入数据库 oracle的日期格式不正确 
    但是我看了下表里面的数据 格式又是一样的 
    郁闷了
      

  2.   

    left join 是SQLSERVER的写法.虽然ORACLE支持,但是这样写比较直观/
    你写的SQL有问题..
    不明白select max(date) from B where id=a.id 你这样是什么意思.
    逻辑有问题.
      

  3.   

    如果硬按照你的意思只能这样写.SELECT a.ID, a.DATE
      FROM a, b
     WHERE a.ID(+) = b.ID AND a.DATE = (SELECT MAX (b.DATE)
                                          FROM a, b
                                         WHERE b.ID = a.ID)
      

  4.   

    这么说吧  我现在有一个帖子表 和一个浏览表  
    我现在建立一个视图 我想把所有的用户发的帖子全部呈现在视图中 并且查出这个帖子的最后浏览人
    但是我发的这个帖子不一定有人浏览过  所以我用left join
    我的 max(date) 就是要查出浏览过这个帖子的最后一个用户
      

  5.   

    select * from a left join 
    (
        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步的结果
      

  6.   

    SQL> select * from b;
            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我试了一下,这样写是没有问题的.
      

  7.   

    两个数据库的版本号分别是什么?
    " a column may not be outer-joined to a subquery "的错误号是什么?