有个表,我想取得存在不同号码的所有姓名,请教怎么写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');
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 max(姓名),号码 from 个人信息 group by 号码/*
(无列名) 号码
张山 111111
张山 123456
李四 222222
小王 333333
小王 444444
*/
个人信息
group by 姓名 having sum(1) >1
select distinct 姓名 from dbo.个人信息 a
where exists(select 1 from dbo.个人信息 b where a.姓名=b.姓名 having count(distinct 号码)>1)
我不要显示李四的信息
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 行受影响)
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 行受影响)*/
select 姓名 from (
select 姓名,号码 from 个人信息 group by 姓名,号码
)a group by 姓名 having count(*)>=2
/*
小王
张山
*/
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);
distinct 姓名
from
dbo.个人信息 t
where
exists(select * from dbo.个人信息 where 姓名=t.姓名 and 号码!=t.号码 and 号码 is not null)