Пометить дубли в таблице sql

Есть mysql табличка на 2353 элементов.
В табличке помимо прочих есть поля: «URL» и «isdubl»
У некоторых записей URL совпадают.
Для всех записей где URL не уникальный надо присвоить «isdubl=`1`»

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//Данные для подключения к БД
$host="localhost";				// Имя хоста
$bdname="baza";				// Имя БД
$bdlogin="baza";				// Логин к БД
$bdpassword="parol";		// Пароль к БД
//--------------------------------------------------------------
$db=@mysql_connect($host,$bdlogin,$bdpassword);
if(!$db)die(mysql_error());
if(!@mysql_select_db($bdname,$db))die(mysql_error()); 
$query_dubl=mysql_query("SELECT * FROM baza1 ",$db);
while($urls=mysql_fetch_array($query_dubl)){
echo $urls['URL']."<br>";
$query_dubl2=mysql_query("SELECT * FROM baza1 WHERE URL = '".$urls['URL']."'" ,$db);
if(mysql_num_rows($query_dubl2)==1)
{echo "совпадений нет <br> ";
}else {$update=mysql_query("UPDATE baza1 SET isdubl='1' where URL = '".$urls['URL']."'",$db);}
}
?>

это мое решение, но вроде как оказалось проблема может быть решена всего одним запросом

1
UPDATE `test` SET `is_dubl` = 1 WHERE `url` IN(SELECT `url` FROM (SELECT * FROM `test` GROUP BY `url` HAVING (COUNT(`url`) > 1)) AS `temp`)

что только доказывает очень часто у одной задачи есть несколько вариантов решения :)

Leave a Reply

You must be logged in to post a comment.