У меня небольшая проблема, моя таблица "мебель" содержит записи, где идентификатор один и тот же. Я покажу тебе.
заглавие
id: public_name
1: "стол"
1: "стол"
1: "стол"
2: 'comp'
2: 'comp'
3: "ковер"
3: "ковер"
3: "ковер"
3: "ковер"
Я не знаю, как это произошло, но запись для id 2 была дублирована, а некоторые из них даже были втрое. Я пробовал использовать этот скрипт для его решения.
<?php
$con = mysql_connect("localhost","root","pass");
Mysql_Select_db("db", $con);
for($i = 0; $i < 52752; $i++) {
$find = mysql_query("SELECT * FROM furniture WHERE id = '".$i."'");
$count = mysql_num_rows($find);
mysql_query("DELETE FROM furniture WHERE id = '$i' LIMIT ($i - $count)");
echo "'.$i.' fixed";
}
Но он не работает, он удаляет все из идентификаторов, я хочу, чтобы он оставил одну запись на один идентификатор.
Есть ли простой запрос или сценарий для решения этой проблемы?
Простейшим методом в MySQL является удаление и повторное заполнение таблицы:
create table temp_furniture as
select distinct id, public_name
from furniture;
truncate table temp_furniture;
insert into temp_furniture(id, public_name)
select id, public_name
from temp_furniture;
Затем, чтобы предотвратить это в будущем, добавьте уникальные индексы/ограничения:
create unique index unq_furniture_id on furniture(id);
И вы, вероятно, захотите также назвать это имя:
create unique index unq_furniture_public_name on furniture(public_name);