告白:mysql newbには、やや大きなテーブルで重複する行を見つけるための簡単な例が必要です。同様のタイトルを持つ他の多くのスレッドを検索して読んだことがありますが、例が非常に複雑であるため、基本的な状況に適用できません。
MySQLテーブルには5つのフィールドしかありませんが、数百の行があります。重複する行を見つけたいのですが、確かに1つあることはわかっていますが、他の行があるかどうか疑問に思います。
行の例:(rel_idは自動インクリメント、主キーフィールド)
'rel_id' => 1
'host' => 17
'host_type' => 'client'
'rep' => 7
'rep_type => 'cli_mgr'
私のアプローチは次のとおり
です。1。テーブル全体をmysqlクエリに読み込みます
。2。行ごとに4つのデータフィールドを前の(「完了」)行のデータフィールドと比較します。3
。「新しい」行を比較した後、次の配列に追加します。 「完了」行
これが私が試したことです。もっと簡単な解決策があるはずです。「done」行の配列に「new」行を追加しようとすると、行き詰まっていることがわかります。
$rRels = mysql_query("SELECT * FROM `rels`");
$a = array();
$e = array();
$c1 = 0;
$c2 = 0;
While ($r = mysql_fetch_assoc($rRels)) {
$i = $r['rel_id'];
$h = $r['host'];
$ht = $r['host_type'];
$r = $r['rep'];
$rt = $r['rep_type'];
foreach($a as $row) {
$xh = $row['host'];
$xht = $row['host_type'];
$xr = $row['rel'];
$xrt = $row['rel_type'];
if (($h==$xh) && ($ht==$xht) && ($r==$xr) && ($rt==$xrt)) {
echo 'Found one<br>';
$e[] = $r;
}
$c2++;
}
$a = array_merge(array('rel_id'=>$i, 'host'=>$h, 'host_type'=>$ht, 'rep'=>$r, 'rep_type'=>$rt), $a);
$c1++;
}
echo '<h3>Duplicate Rows:</h3>';
foreach ($e as $row) {
print_r($row);
echo '<br>';
}
echo '<br><br>';
echo 'Counter 1: ' . $c1 . '<br>';
echo 'Counter 2: ' . $c2 . '<br>';