代码中的MySQL错误

时间:2014-01-27 02:43:00

标签: mysql sql

我在下面的MYSQL中有sql代码并且我一直遇到错误:'每个派生表必须有自己的别名'。我已经尝试为每个表命名,但错误仍然存​​在。

select max(a1) - min(a1) from
  ( 
    (
      select avg(av1) as a1 
      from 
        (
          select avg(stars) as av1 
          from (rating r join movie m on r.mid=m.mid) as new1 
          where m.year < 1980
          group by r.mid) as new2 
        ) as new3 
      union
        (
          select avg(av2) as a1 
          from
            (
              select avg(stars) as av2 
              from (rating r join movie m on r.mid = m.mid
            ) as new4 
          where m.year>1980
          group by r.mid
        ) as new5
    ) as new6 
  );

请原谅我,如果这对任何一个人来说都是一个非常愚蠢的问题。但是我已经坚持了几个小时这个问题了。请指出我做错了什么。感谢

1 个答案:

答案 0 :(得分:1)

这是您的查询格式,以便我可以阅读:

select max(a1) - min(a1)
from ((select avg(av1) as a1
       from (select avg(stars) as av1
             from (rating r join
                   movie m
                   on r.mid=m.mid
                  ) as new1
             where m.year < 1980
             group by r.mid
            ) as new2
       ) as new3 
    union
     (select avg(av2) as a1
      from (select avg(stars) as av2
            from (rating r join
                  movie m on r.mid = m.mid
                 ) as new4
            where m.year>1980
            group by r.mid
           ) as new5
     ) as new6
    )

你最后需要一个别名。

顺便说一句,我认为new3也不正确。 union / union all中的子查询不带别名。