2017-02-08 12 views
0

У меня есть таблица вроде этого:Как редактировать существующие данные MySQL «уникальный», если он дублирует или более

enter image description here

Я использую псевдоним в ссылках, как http://www.yoursite.com/ALIAS

Таким образом, они должны быть уникальными ,

Но у меня есть почти 1 миллион строк, поэтому, когда я использую код внизу, это занимает много времени, а сайт - вниз.

Кстати, что вы посоветуете мне?

Большое спасибо.

$sql2="SELECT id,adi,alias from firma where id>1400 and id<100000 and onay=0 "; 
    $gor=mysqli_query($i_link,$sql2); 
    while($sonuc=mysqli_fetch_row($gor)) 
    { 
     $alias=$sonuc['2']; 
     $ee="SELECT id from firma where alias='".$alias."' "; 
     $says=mysqli_query($i_link,$ee); 
     $say=mysqli_num_rows($says); 
     if($say>1) 
      { 
       $r=rand(0,999); 
       $aliasy=$alias."-".$r; 
     mysqli_query($i_link,"UPDATE firma SET alias='".$aliasy."' WHERE id='".$sonuc['0']."' "); 

      } 
     } 
+0

выберите отчетливый –

+0

это работает для выбора различных (различных) значений, я должен изменить все строки – Bagova

+0

SELECT COUNT (ID) от ООО фирмы, где псевдоним = «„ $ псевдонима.“» –

ответ

1

Это то, что ваш код, кажется, делает:

  1. Получить все строки из table, с идентификатором range
  2. Для каждой строки, получить псевдоним
  3. количество Get строк для каждого алиаса проверьте, больше ли его 1
  4. Если количество строк больше 1, обновите строки с псевдонимом с префиксом случайным числом

Шаг 1 - 3 немного избыточен, так как вы повторно извлекаете одни и те же данные, я бы рекомендовал извлекать только те псевдонимы, которые появляются несколько раз и обновляют их. Ниже приведен пример запроса, чтобы получить все такие псевдонимы:

SELECT alias, GROUP_CONCAT(id) 
FROM test 
WHERE id >= 1 AND id <= 335003 
GROUP BY alias 
HAVING COUNT(*) > 1; 

Этот запрос даст вам псевдонимы, которые появляются более чем один раз, вы можете перебирать их, получить идентификаторы и обновлять соответствующие записи. Это избавит вас от одной итерации и сделает приложение быстрее.

Вот SQL Fiddle.

 Смежные вопросы

  • Нет связанных вопросов^_^