查询到表里某列数据相同的数据行

1917584 2006-08-09 09:02:17
有以下表hhh
姓名 电话号码 ……
张三 13812345678
李四 13312345678
王五 13912345678
张甲 13312345678
李乙 13312345555

1、什么语句可以找到电话号码相同的行,得到以下结果:

姓名 电话号码 ……
李四 13312345678
张甲 13312345678

2、什么语句可以得到电话号码前8位相同手机号的行,得到以下结果:

姓名 电话号码 ……
李四 13312345678
张甲 13312345678
李乙 13312345555


...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-08-09
  • 打赏
  • 举报
回复
。。。
十一月猪 2006-08-09
  • 打赏
  • 举报
回复
错了
Having count(1) > 1
十一月猪 2006-08-09
  • 打赏
  • 举报
回复


1.
Select * From hhh
Where ???? In
(
Select ???? From hhh
Group By ????
Having Count(1) > 1
)

Or

Select * From hhh
Where ???? In
(
Select a.???? From hhh a
Where (Select Count(1) From hhh where a.???? = ???? ) > 1
)

2.

Select * from hhh
Where left(????,8) In
(
Select left(????,8) From hhh
Group left(????,8)
Having count(1) > 2
)
paoluo 2006-08-09
  • 打赏
  • 举报
回复
用關聯的效率更優
xyxfly 2006-08-09
  • 打赏
  • 举报
回复
1、什么语句可以找到电话号码相同的行,得到以下结果:
select * from hhh where 电话号码 in (select 电话号码 from hhh group by 电话号码 having count(1)>1)

第二个同理,left,or substring
playwarcraft 2006-08-09
  • 打赏
  • 举报
回复
1.select * from hhh where 电话号码 in
(select 电话号码 from hhh group by 电话号码 having count(*)>1)

2.select * from hhh where left(电话号码,8) in
(select left(电话号码,8) from hhh group by left(电话号码,8) having count(*)>1)
paoluo 2006-08-09
  • 打赏
  • 举报
回复

Create Table hhh
(姓名 Nvarchar(10),
电话号码 Char(11))
Insert hhh Select N'张三', '13812345678'
Union All Select N'李四', '13312345678'
Union All Select N'王五', '13912345678'
Union All Select N'张甲', '13312345678'
Union All Select N'李乙', '13312345555'
GO
--1.找到电话号码相同的行
--方法一:
Select * From hhh A Where Exists (Select * From hhh Where 电话号码=A.电话号码 And 姓名<>A.姓名)
--方法二:
Select Distinct A.姓名,A.电话号码 From hhh A
Inner Join hhh B
On A.电话号码=B.电话号码 And A.姓名<>B.姓名
--2.得到电话号码前8位相同手机号的行
--方法一:
Select * From hhh A Where Exists (Select * From hhh Where Left(电话号码,8)=Left(A.电话号码,8) And 姓名<>A.姓名)
--方法二:
Select Distinct A.姓名,A.电话号码 From hhh A
Inner Join hhh B
On Left(A.电话号码,8)=Left(B.电话号码,8) And A.姓名<>B.姓名
Go
Drop Table hhh
--Result
/*
姓名 电话号码
李四 13312345678
张甲 13312345678

姓名 电话号码
李四 13312345678
张甲 13312345678
李乙 13312345555
*/
paoluo 2006-08-09
  • 打赏
  • 举报
回复

Create Table hhh
(姓名 Nvarchar(10),
电话号码 Char(11))
Insert hhh Select N'张三', '13812345678'
Union All Select N'李四', '13312345678'
Union All Select N'王五', '13912345678'
Union All Select N'张甲', '13312345678'
Union All Select N'李乙', '13312345555'
GO
--1.找到电话号码相同的行
Select * From hhh A Where Exists (Select * From hhh Where 电话号码=A.电话号码 And 姓名<>A.姓名)
--2.得到电话号码前8位相同手机号的行
Select * From hhh A Where Exists (Select * From hhh Where Left(电话号码,8)=Left(A.电话号码,8) And 姓名<>A.姓名)
Go
Drop Table hhh
--Result
/*
姓名 电话号码
李四 13312345678
张甲 13312345678

姓名 电话号码
李四 13312345678
张甲 13312345678
李乙 13312345555
*/
paoluo 2006-08-09
  • 打赏
  • 举报
回复
1.

Select * From hhh A Where Exists (Select * From hhh Where 电话号码=A.电话号码 And 姓名<>A.姓名)

2.

Select * From hhh A Where Exists (Select * From hhh Where Left(电话号码,8)=Left(A.电话号码,8) And 姓名<>A.姓名)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧