select plate.plateID,PlateName,PlateState,PlateRes,Topic.TopicTitle,AnswerCountA,userInfo.username
from plate
left join Topic
on Topic.plateID=plate.plateID and TopicTope='置顶帖'
left join userInfo
on Topic.userID=userInfo.userID
left join (select TopicID,count(*) as AnswerCountA 
from Answer group by TopicID) as userTopic 
on Topic.TopicID = userTopic.TopicID
where ParentID=:ParentID这个语句在as那里报错,显示缺少关键字,这是什么错?我之前在SQL 2008里运行过是正确的,但是在ORACLE里面就有问题。。有没有大神可以解释下??

解决方案 »

  1.   

    Oracle子表别名不需要用as,去掉试试。
      

  2.   

    sqlserver 能运行的,oracle未必就能运行吧。。除非是标准的sql92语法。而你这个也不是。。oracle里面表别名直接写就行了,不需要as,不像字段可以用as
      

  3.   

    (select TopicID,count(*) as AnswerCountA 
    from Answer group by TopicID) as userTopic --这个是一个子查询,作用类似于一个表,而不是一个字段,所以不能用as。去掉as就可以了。
      

  4.   

    我觉得你写的不对。
    select plate.plateID,PlateName,PlateState,PlateRes,Topic.TopicTitle,AnswerCountA,userInfo.username
    from Topic
    plate
    left join plate
    on Topic.plateID=plate.plateID and TopicTope='置顶帖'
    left join userInfo
    on Topic.userID=userInfo.userID
    left join (select TopicID,count(*) as AnswerCountA 
    from Answer group by TopicID)  userTopic 
    on Topic.TopicID = userTopic.TopicID
    where ParentID=:ParentID;
    这样试试