Пометить дубли в таблице 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`) |
что только доказывает очень часто у одной задачи есть несколько вариантов решения