php頁面上放一個刪除數(shù)據(jù)庫重復(fù)數(shù)據(jù)的功能按鈕,就是使用PHP操作數(shù)據(jù)庫刪除重復(fù)數(shù)據(jù)的SQL語句,然后重新查詢綁定輸出。
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的江北網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
如果是PHP操作數(shù)據(jù)庫不明白的話,就找PHP操作數(shù)據(jù)庫這篇內(nèi)容來看。
如果是用SQL語句來刪除數(shù)據(jù)庫重復(fù)數(shù)據(jù)不明白的話就找SQL刪除重復(fù)數(shù)據(jù)這方面的內(nèi)容。
如果你要具體的實現(xiàn)代碼,不好意思,幫不了你,這需要你自己找,自己實現(xiàn)。這是程序員必備的技能。
1.首先,題主應(yīng)該選一個相似度的計算維度,比如content字段,type字段等;
2.其次,題主考慮一下各個字段的權(quán)重,比如type字段必須相同,則讓type字段使用typeWeight(例如賦值0.8)作為乘積的因子,而content字段本身是比較長的,所以需要計算出一個hash值,比如使用特定算法計算出一個hash值,然后把這個hash值按照16進(jìn)制計算得到10進(jìn)制數(shù),再給一個權(quán)重contentWeight(例如0.2),另外再選取一個字段,比如description描述字段,再給一個權(quán)重descriptionWeight...
3.最后得到一個當(dāng)前插入到表中的記錄綜合hash,typeWeight(contentHashcontentWeight+descriptionHash*descriptionWeight
+...),可能會涉及到大整數(shù)計算,不過PHP有BCMATH擴(kuò)展可以使用,最終得到一個數(shù)值的綜合hash值,保存到數(shù)據(jù)庫的一個字段中,這個東西就可以理解為本條記錄的特征值。
顯示數(shù)據(jù)庫db中表tab上字段user的重復(fù)數(shù)量的查詢語句為:
$sql='select user,count(*) from db.tab group by 1';
用mysql_query、mysql_fetch_array循環(huán)就可以顯示所有重復(fù)值的統(tǒng)計
如果只查user為'xxx'有多少,查詢語句為:
$sql="select count(*) from db.tab where user='xxx'";
SELECT xx1,COUNT(xx1) AS c FROM 表名 GROUP BY xx1 ORDER BY c DESC
使用COUNT結(jié)合GROUP BY去查詢,得到的結(jié)果再進(jìn)行排序即可。這樣不需要用到PHP,只要一個SQL語句就搞定了。
這個問題有2層意思:
考慮數(shù)組為$arr = ("bob","bob","jose","rose","kid","rose","obo")
1,找出特定某個值重復(fù)了多少次,例如,找出數(shù)組中bob出現(xiàn)了多少次
$count = 0;
foreach($arr as $v)
{ if("bob" == $v )
$count ++;
}
這里求出來的$count 就是bob出現(xiàn)了多少次
2,找出重復(fù)過的值,而不是針對某個值。應(yīng)該二重循環(huán)
$count?=?array();?//數(shù)組記錄重復(fù)次數(shù)
$temp_count?=?0;
foreach?(?$arr?as?$?out?)?
foreach?($arr?as?$?in?)
{
$temp_count?=?0;
if($in?==?$out)
{
$temp_count?++;
if($temp_count?1)
{
$count[$in]?=?$temp_count;
}
}
}
這里的話,$count數(shù)組里面就是存放了重復(fù)過的鍵值和次數(shù)(大于1)
下面的語句可以找出重復(fù)的編碼:
SELECT `編碼`,count(*) from `表名` group by `編碼` having count(*)1
注意執(zhí)行的時候把`編碼`和`表名`改為具體的名稱,如果不是中文字段名和表名,就可以無需反單引號,千萬別打成單引號,否則會報告語法錯誤的。