例子:
有一个表 Table1,有两个字段 ACCOUNT_ID CATEGORY_ID.ACCOUNT_ID   CATEGORY_NAME
    1             a
    2             b
    3             a
    1             c
    2             c
    4             a 
    1             e 
a对应1.3.4 , c对应1.2.
b只对应2, e只对应1。问题:我想查找 CATEGORY_NAME所对应的ACCOUNT_ID只有一个种类的。就像b只对应2,e只对应1。
 就是想找b和e 怎么找????
用selece from where 怎么实现
    

解决方案 »

  1.   

    select category_name,count(1) from table group by 1  having count(1) =1
      

  2.   

    select CATEGORY_NAME 
    from table1
    group by CATEGORY_NAME 
    having count(distinct ACCOUNT_ID)=1
      

  3.   


    select * from ta a
    where not exists(select 1 from ta b where a.CATEGORY_ID=b.CATEGORY_ID and a.rowid!=b.rowid)
      

  4.   

    select * 
    from Table1 a
    where not exists(
    select 1 from Table1 
    where CATEGORY_NAME=a.CATEGORY_NAME
    and ACCOUNT_ID!=a.ACCOUNT_ID)
      

  5.   

    或者select CATEGORY_NAME
    from Table1
    group by CATEGORY_NAME
    having count(distinct ACCOUNT_ID)=1
      

  6.   

    用CATEGORY_NAME 分组。找到等于1不就完了!
      

  7.   


    非常感谢 wildwave的答案,多谢了!!
      

  8.   

    select account_id,CATEGORY_NAME from temp where CATEGORY_NAME in(
    select CATEGORY_NAME from(
    select account_id,CATEGORY_NAME from temp group by account_id,CATEGORY_NAME
    ) group by CATEGORY_NAME having count(CATEGORY_NAME) = 1
    )group by account_id,CATEGORY_NAME