例子来源:http://hi.baidu.com/ljw460/blog/item/335d86526e0e70080cf3e3b9.html
table表字段1     字段2
   id        name
   1           a
   2           b
   3           c
   4           c
   5           b为什么我按照这个例子却出不来结果???
select *, count(distinct name) from table group by name

解决方案 »

  1.   

    不知道你看到的例子裏是怎麼查詢到的,不過對於group by而言,是一種聚合,count是聚合函數,那麼在group by後跟的是select中除了應用聚合函數之外的所有字段就語法而言,這樣子是行不通的。
      

  2.   

    作者可能贴上博客的时候贴漏了某些语句。因为他有提示哦,他说:“group by 必须放在 order by 和 limit之前,不然会报错”。此处他明显就没有order by和limit嘛。而且,oracle私有语法是没有limit的哦。limit是mysql的语法。如果你想实现他的效果,你也可以这么做:
    hr@ORCL> select * from
      2        (select id,name,rank() over(partition by name order by id) m from t)
      3      where m=1;        ID NAME           M
    ---------- ----- ----------
             1 a              1
             2 b              1
             3 c              1 
      

  3.   

    明显的语法错误!
    WITH t AS(
    SELECT 1 id,'a' NAME FROM dual
    UNION ALL 
    SELECT 2,'b' FROM dual
    UNION ALL 
    SELECT 3,'c' FROM dual
    UNION ALL 
    SELECT 4,'c' FROM dual
    UNION ALL 
    SELECT 5,'b' FROM dual
    )
    SELECT Min(id)id,NAME FROM t GROUP BY name 
      

  4.   

    首先是语法错误,另外就是为什么你一定得把表名取为table了,如果是这样的话,那你查询的时候应该是:select * from 'table';
      

  5.   

    4楼、5楼的可以得出结果。 4楼的语法不熟。5楼的比较简明。  虽然没有用distinct,但是出来结果了而且简便。学习了。谢谢。