我不是很清楚你的要求, 如果你需要的是不存在重复的号码(不包括重复号码)可以这样
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了全椒免费建站欢迎大家使用!
select r_cCphonenum from 表 group by r_cCphonenum having count(*)=1
这样输出:
013305266981
013305276046
如果只需要去除重复项,则可以
select distinct r_cCphonenum from 表
结果:
013305237070
013305266981
013305276046
其他相关联的查询其实很简单了, 更需要考虑的是效率问题.
SELECT DISTINCT 字段 FROM 表 --选出不重复值
select ID from table1 group by ID HAVING COUNT(*)1--选出重复值
这样肯定不行啊,因为数据库无法判断你要去掉哪条重复的。
比如你想要a只显示一条,但是相对于a的col1里面有三个不同的值,数据库是无法给你判断的。
这个时候就要看你想要什么样的值了,假如我想要每个人的最低分科目
select t.col2, min(t.col1) from t_table t
group by t.col2
having min(t.col1) '-1'
一个简单的分组就搞定了。如果还有问题就“百度hi”问我吧。
用sqlserver的时候会有点小问题。可以考虑嵌套查询:
例如
select * from table1
where id in (select id from table1
group by name)
select first_name,
case flag1+flag2 when 100 then '是' else null end as '两边都出现一次',
case flag1+flag2 when 101 then '是' else null end as 'phone出现多次',
case flag1+flag2 when 110 then '是' else null end as 'key出现多次',
case flag1+flag2 when 111 then '是' else null end as '两边都出现多次'
from (select first_name,
case when count(distinct number_key)=1 then 0 else 1 end as flag1,
case when count(distinct phone)=1 then 100 else 110 end as flag2
from table_name
group by first_name
) t