#1248 - Every derived table must have its own alias
就是一直是这个常见的错误……但是不知道该怎么解决orz语句是以下的两句
$sql3="select u.* 
       from user u 
       having u.user_id= any(select b.user_id 
                             from (select b.* 
                                   from blogs b 
                                   group by user_id 
                                   order by count(*)
                                    ) 
                             where rownum<=6");$sql="select b.* from blogs b
      having b.id = any (
                         select c.blog_id from (select c.blog_id,count(*) 
                                                from comment c 
                                                group by c.blog_id order by count(*) DESC
                                                ) where rownum<=5 )";

解决方案 »

  1.   

    子查询里临时表没有别名。$sql3="select u.* 
           from user u 
           having u.user_id= any(select b.user_id 
                                 from (select b.* 
                                       from blogs b 
                                       group by user_id 
                                       order by count(*)
                                        ) tmp
                                 where rownum<=6");$sql="select b.* from blogs b
          having b.id = any (
                             select c.blog_id from (select c.blog_id,count(*) 
                                                    from comment c 
                                                    group by c.blog_id order by count(*) DESC
                                                    ) tmp where rownum<=5 )";
      

  2.   

    #1248 - Every derived table must have its own alias
    每次派生出来的表必须要有它自己的别名
      

  3.   


    ls的好强!又见到你了!上一个问题也是你解答的!
    然后运行了之后,还是有问题,第一个的报错是
    #1054 - Unknown column 'b.user_id' in 'field list'然后如果把b.blog的前缀去掉,报错就变成#1054 - Unknown column 'rownum' in 'where clause'顺便问一下,运行php,错误显示Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in index.php on line 149
    就是因为sql有问题是么?
    晚些
      

  4.   

    sorry ,只改临时表名了,忘记改前面的了。。$sql3="select u.* 
           from user u 
           having u.user_id= any(select tmp.user_id 
                                 from (select b.* 
                                       from blogs b 
                                       group by user_id 
                                       order by count(*)
                                        ) tmp
                                 where rownum<=6");没测试。
      

  5.   

    那个warning不是错误,函数的新旧问题,在前面加个@去除提示就可以!不影响程序的正常运行
      

  6.   

    还是有问题,报错是
    #1054 - Unknown column 'rownum' in 'where clause'
    如何解决T_T
      

  7.   


    如何做到这一点?
    sorry...no chinese input here...i only ctrl+c/v maybe can not explain question clearT_T
      

  8.   

    php报错是
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/yiling/public_html/test/index.php on line 172
     php是$sql1="select * from (select * from blogs where private=1 order by Btime DESC) where rownum<=5";
    $query1=mysql_query($sql1);
    while($blog1=mysql_fetch_array($query1)){
    echo $blog1['title'];
    echo $blog1['Btime'];
         }不知道该怎么解决orz
      

  9.   

    select * from (select * from blogs where private=1 order by Btime DESC) tmp where tmp.rownum<=5
    子查询的效率不高。可以用表连接。