有个表,我想取得存在不同号码的所有姓名,请教怎么写SQL语句,非常感谢!
IF OBJECT_ID (N'dbo.个人信息', N'U') IS NOT NULL
DROP table  dbo.个人信息; 
CREATE
    TABLE  dbo.个人信息
    (
        ID DECIMAL(18,0) NOT NULL IDENTITY,
        姓名 NVARCHAR(50) COLLATE Chinese_PRC_CI_AS,
        号码 NVARCHAR(255) COLLATE Chinese_PRC_CI_AS
    )
insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456');
insert into dbo.个人信息 (姓名, 号码) values ('张山', '111111');
insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456');
insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222');
insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222');
insert into dbo.个人信息 (姓名, 号码) values ('小王', '333333');
insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444');
insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444');
insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444');

解决方案 »

  1.   


    select max(姓名),号码 from 个人信息 group by 号码/*
    (无列名) 号码
    张山 111111
    张山 123456
    李四 222222
    小王 333333
    小王 444444
    */
      

  2.   

    select 姓名 from 
    个人信息
    group by  姓名 having sum(1) >1
      

  3.   

    select distinct 姓名, 号码 from 个人信息;
      

  4.   


    select distinct 姓名 from dbo.个人信息 a 
    where exists(select 1 from dbo.个人信息 b where a.姓名=b.姓名 having count(distinct 号码)>1)
      

  5.   

    to zc_0101
    我不要显示李四的信息
      

  6.   


    IF OBJECT_ID (N'dbo.个人信息', N'U') IS NOT NULL 
    DROP table  dbo.个人信息; 
    CREATE 
        TABLE  dbo.个人信息 
        ( 
            ID DECIMAL(18,0) NOT NULL IDENTITY, 
            姓名 NVARCHAR(50) COLLATE Chinese_PRC_CI_AS, 
            号码 NVARCHAR(255) COLLATE Chinese_PRC_CI_AS 
        ) 
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456'); 
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '111111'); 
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456'); 
    insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222'); 
    insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '333333'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444'); select distinct 姓名 from dbo.个人信息 t
    where exists(select * from dbo.个人信息 where 姓名=t.姓名 and 号码!=t.号码)
    姓名
    --------------------------------------------------
    小王
    张山(2 行受影响)
      

  7.   


    IF OBJECT_ID (N'dbo.个人信息', N'U') IS NOT NULL
    DROP table  dbo.个人信息;
    CREATE
        TABLE  dbo.个人信息
        (
            ID DECIMAL(18,0) NOT NULL IDENTITY,
            姓名 NVARCHAR(50) COLLATE Chinese_PRC_CI_AS,
            号码 NVARCHAR(255) COLLATE Chinese_PRC_CI_AS
        )
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456');
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '111111');
    insert into dbo.个人信息 (姓名, 号码) values ('张山', '123456');
    insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222');
    insert into dbo.个人信息 (姓名, 号码) values ('李四', '222222');
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '333333');
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444');
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444');
    insert into dbo.个人信息 (姓名, 号码) values ('小王', '444444'); 
    select 姓名 from 个人信息 group by 姓名 having count(distinct 号码)>1/*
    姓名
    --------------------------------------------------
    小王
    张山(2 行受影响)*/
      

  8.   


    select 姓名 from (
    select 姓名,号码 from 个人信息 group by 姓名,号码  
    )a group by 姓名 having count(*)>=2
    /*
    小王
    张山
    */
      

  9.   

    谢谢各位高手,如果含有null的记录,是否也可把小马找到,不要小赵的,等下马上结贴
    insert into dbo.个人信息 (姓名, 号码) values ('小马', '222222'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小马', '222222'); 
    insert into dbo.个人信息 (姓名, 号码) values ('小马', null); 
    insert into dbo.个人信息 (姓名, 号码) values ('小马', null);
    insert into dbo.个人信息 (姓名, 号码) values ('小赵', null);  
    insert into dbo.个人信息 (姓名, 号码) values ('小赵', null);  
      

  10.   

    SEELCT 姓名 FROM 个人信息 GROUP BY  姓名 HAVING COUNT(DISTINCT 号码)>1
      

  11.   

    SELECT 姓名 FROM 个人信息 GROUP BY  姓名 HAVING COUNT(DISTINCT ISNULL(号码,''))>1
      

  12.   

    select 
      distinct 姓名 
    from 
      dbo.个人信息 t
    where 
      exists(select * from dbo.个人信息 where 姓名=t.姓名 and 号码!=t.号码 and  号码 is not null)