Удалить дубликаты записей из таблицы, где идентификатор дублируется

0

У меня небольшая проблема, моя таблица "мебель" содержит записи, где идентификатор один и тот же. Я покажу тебе.

заглавие

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";
}

Но он не работает, он удаляет все из идентификаторов, я хочу, чтобы он оставил одну запись на один идентификатор.

Есть ли простой запрос или сценарий для решения этой проблемы?

Теги:

1 ответ

3

Простейшим методом в 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);
  • 0
    Я не совсем понимаю, если это поможет. Моя структура мебельного стола такая: pastebin.com/CLwC29pL

Ещё вопросы

Сообщество Overcoder
Наверх
Меню