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 说一列在外连接上不能用子查询
但是我这条语句在一个数据库上运行是可以的 但是导出到另一个数据库这个就报错了
跪求各位大虾给个解决方案 或告诉我这里是什么出了问题 谢谢大家了
在下分不多 全部奉上
...全文
39948打赏收藏
一个 left join 嵌套子查询的问题
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 说一列在外连接上不能用子查询 但是我这条语句在一个数据库上运行是可以的 但是导出到另一个数据库这个就报错了 跪求各位大虾给个解决方案 或告诉我这里是什么出了问题 谢谢大家
SQL> 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> /
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.aid
a表为帖子表,字段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步的结果