select count(distinct fieldname)
from tablename
group by fieldname

解决方案 »

  1.   

    多谢!
    但如果group by是两个字段呢?
      

  2.   

    一样:
    select count(distinct fieldname1,fieldname2)
    from tablename
    group by fieldname1,fieldname2
      

  3.   

    你在oracle下试一下,语法都通不过阿....急!!!
      

  4.   

    group by 后,立刻取@@ROWCOUNT的值。@@ROWCOUNT
    返回受上一语句影响的行数。语法
    @@ROWCOUNT返回类型
    integer注释
    任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。示例
    下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = 'Jones'
    WHERE au_id = '999-888-7777'
    IF @@ROWCOUNT = 0
       print 'Warning: No rows were updated'
      

  5.   

    上面的例子是 MS SQL 的,找一下oracle类似的全局变量。
      

  6.   

    我的是SQL SERVER :(
    不会ORACLE不支持这样的语法吧?:((
    好象楼上的@@rowcount 也是SQL SERVER中的用法:(((看来我要加强对ORACLE的学习了(改正一下,不是加强,是开始)   :((((
      

  7.   

    查一下ORACLE 的语法吧,我觉得这应该是比较通用的,是不是其他地方写错了?
      

  8.   

    各位大哥,怎么办阿??!!
    我也是oracle刚入门阿,可是这个却很急....:(
      

  9.   

    好象是有点不对,我直接写的,也没有执行过:)  这样看看:
    select count(*)
    from (select fieldname1,fieldname2
          from tablename
          group by fieldname1,fieldname2)
      

  10.   

    to icevi,好象不对吧?
    在MSSQL中,执行
    select count(distinct usagetype) from usagelist group by usagetype
    返回:
                
    ----------- 
    1
    1
    1
    1
    1(所影响的行数为 5 行)
      

  11.   

    或:
    select count(distinct fieldname1,fieldname2)
    from tablename不需要group by 了.
      

  12.   

    foolishchao(傻超):说得对!我刚才也发现了:)
      

  13.   

    To icevi:
    select count(*)
    from (select fieldname1,fieldname2
          from tablename
          group by fieldname1,fieldname2) 我试过了,但是我遇到的更复杂:
    类似于 select count(*) from
    (select .... union all select ...)   oracle下死活通不过:(
      

  14.   

    子查询中有UNION吗?那为什么不这样:
    select count(a.*)+count(b.*)
    from (select ...) a ,(select ..... ) b
      

  15.   

    select * 
        from (select count(distinct fieldname1,fieldname2)
              from tablename
              group by fieldname1,fieldname2)