背景; 银行一般都会出现一种情况, 一个用户开多个账户现在想用SQL查询出 一个银行系统里,一个用户有两个以上(含两个的)账户一共有多少个?比如
  身份证id         开卡 时间
    ID               CARDTIME
    101              20090101
   102              20080101
   102              20090201
   103              20070101
   103              20080808
   103              20090202现在要 SELECT  出来的结果是 2   也就是 (102  、103)现在有一个参照SELECT  ID  COUNT(*)
FROM  TABLE1
WHERE ID IN (
SELECT ID FROM TABLE1
GROUP BY ID
HAVING COUNT(ID)> 1
)结果: 
101   1
102   2
103   3但是我想得到的结果 只是 “2”就是意思:一个用户有两个以上(含两个的)账户一共有2个

解决方案 »

  1.   

    SELECT  ID 
    FROM  TABLE1
    WHERE ID IN (
    SELECT ID FROM TABLE1
    GROUP BY ID
    HAVING COUNT(ID)> 1
    )
      

  2.   

    select id,count(id) from table1 where id exits( select id from table1 where count(id)>1)
      

  3.   

    SELECT COUNT(*) FROM (SELECT  DISTINCT ID FROM  TABLE1 
    WHERE ID IN ( 
    SELECT ID FROM TABLE1 
    GROUP BY ID 
    HAVING COUNT(ID)> 1 
    ) )
      

  4.   

    select id
    from t
    group by id
    having count(*) > 1
      

  5.   

    上面没有一个正确的1楼和4楼 都是得到 具体 的 用户名字,我想要的是用户的数量,问题是,这个查询不在乎,用户到底是谁,而是用户一共多少个2楼 3 楼  的SQL  语句有问题  3楼 正确理解了我的意思 ,可惜 3楼的语句我 执行不过去。总报错我用的是 MYSQL
      

  6.   

    5555555555......
    公司的DB2 我又不能随便 加个table, 
    所以在自己电脑上随便安装个数据库软件  试试  SQL语句的 
    希望高人现身啊 
      

  7.   

    select count(*)
    from (
    SELECT ID FROM TABLE1 
    GROUP BY ID 
    HAVING COUNT(ID)> 1 )
      

  8.   

    SELECT COUNT(*) 
      FROM 
        (SELECT  ID  COUNT(*) 
           FROM  TABLE1 
          WHERE ID IN  
                   (SELECT ID 
                      FROM TABLE1 
                     GROUP BY ID 
                    HAVING COUNT(ID)> 1))
      

  9.   

    SELECT COUNT(DISTINCT ID ) FROM (SELECT ID FROM TABLE1 WHERE ID IN (select ID FROM TABLE1 GROUP BY ID HAVING COUNT(1)>1))
      

  10.   

    刚Oracle试了下,9楼的写法就可以了
      

  11.   

    SQL> select * from t_01;        ID CARDTIME
    ---------- ----------
           101 20090101
           102 20080101
           102 20090201
           103 20070101
           103 20080808
           103 20090202已选择6行。SQL> select count(distinct id)
      2  from
      3  (select id from t_01 group by id having count(id)>1);COUNT(DISTINCTID)
    -----------------
                    2
      

  12.   

    晕死,MYSQL你跑到Oracle来问啥
    不过下面的语句在MYSQL里应该能运行吧
    其实只要把你的SQL改一下就行了
    SELECT  COUNT(*) 
    FROM  ( 
    SELECT ID FROM TABLE1 
    GROUP BY ID 
    HAVING COUNT(ID)> 1 
      

  13.   

    SELECT COUNT(A.*) 
     FROM (SELECT ID, COUNT(*) AS TOTAL FROM TABLE1 GROUP BY ID) A
    WHERE A.TOTAL > 2
      

  14.   

    SELECT COUNT(*) FROM (
        SELECT t.ID FROM TABLENAME t GROUP BY t.ID HAVING COUNT(*) > 1
    )
      

  15.   

    create table card
    ( id number,
      cardtime number);
    insert into card values(101,20090101);
    insert into card values(102,20080101);
    insert into card values(102,20090301);
    insert into card values(103,20090111);
    insert into card values(103,20090121);
    insert into card values(103,20090401);select id, count(id)
      from card
     where id in (select id from card group by id having count(id) > 1)
     group by id;
      

  16.   

    select * from card 
    where id in (select id from card group by id having count(1)>1);orselect * from card a
    where exists(select 1 from card b where a.id=b.id group by b.id having count(1)>=2)
      

  17.   

    弱弱的问句,现在银行都用MYSQL?这个。
      

  18.   

    结贴啦    select count( a.id) as idnum
        from (select id
             from table_a
             group by id 
             having count(id)>1)   as a
        with ur;