我不是很清楚你的要求, 如果你需要的是不存在重復的號碼(不包括重復號碼)可以這樣
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了全椒免費建站歡迎大家使用!
select r_cCphonenum from 表 group by r_cCphonenum having count(*)=1
這樣輸出:
013305266981
013305276046
如果只需要去除重復項,則可以
select distinct r_cCphonenum from 表
結果:
013305237070
013305266981
013305276046
其他相關聯(lián)的查詢其實很簡單了, 更需要考慮的是效率問題.
SELECT DISTINCT 字段 FROM 表 --選出不重復值
select ID from table1 group by ID HAVING COUNT(*)1--選出重復值
這樣肯定不行啊,因為數(shù)據(jù)庫無法判斷你要去掉哪條重復的。
比如你想要a只顯示一條,但是相對于a的col1里面有三個不同的值,數(shù)據(jù)庫是無法給你判斷的。
這個時候就要看你想要什么樣的值了,假如我想要每個人的最低分科目
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 '兩邊都出現(xiàn)一次',
case flag1+flag2 when 101 then '是' else null end as 'phone出現(xiàn)多次',
case flag1+flag2 when 110 then '是' else null end as 'key出現(xiàn)多次',
case flag1+flag2 when 111 then '是' else null end as '兩邊都出現(xiàn)多次'
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