Как удалить повторяющаеся строки в MYSQL

Юра

Новичок
Как удалить повторяющаеся строки в MYSQL

Собственно сабж...
Таблица....в певрой автоинкремент во второй слова...слова бывают повторяються...как удалить такие строки?

-~{}~ 13.08.05 03:56:

и ...ещё вопрос....удалял пустые строки вот что получилось...
ДАна Таблица
|1|a |
|2| |
|3|b |
|4|c |
Удаляю пустые строки... (DELETE FROM table_name WHERE stolb=''")...получаю
|1|a |
|3|b |
|4|c |
А как получить или сделать
|1|a |
|2|b |
|3|c |

???...
 

Юра

Новичок
мг...ну пусть даже мне не нужно это...а как удалить повторяющиеся записи?
 

tashkentchi

Новичок
[sql]DELETE FROM table_name WHERE id NOT IN ( SELECT id FROM table_name GROUP BY stolb )[/sql]
Потом поставь UNIQUE на stolb
 

Юра

Новичок
Потом поставь UNIQUE на stolb
не помогает...

не знаю почему...но у меня на 1 столбце автоинкривмент на втором слова даже если слова повторяються им даёться уникальный ключ ....
 

tashkentchi

Новичок
Я имею в виду следующее. Один раз удаляешь из stolb все повторения, потом прогоняешь запрос
[sql]
ALTER TABLE `table_name` ADD UNIQUE `stolb` ( `stolb` )
[/sql]
Больше у тебя не будут появляться повторения
 

Кощей

if(!$needle) die("ooh");
Мне на это вывело:
#1093 - You can't specify target table 'nuke_topmusic_artist' for update in FROM clause

Читать по английски умею, но суть уловить немогу. Помогите.

-~{}~ 04.11.07 06:35:

Как вам такой вариант?:

$names=array();
$assign=array();
$povtors=array();
$sql=sql("SELECT id, name FROM table ORDER BY name");
while($row=mysql_fetch_assoc($sql)){
$idartist=$row['id'];
$name=$row['name'];

if(in_array($row['name'], $names)){
$povtors[$id]=$row['name'];
}else{
$names[]=$row['name'];
$assign[$name]=$row['id'];
}


}

foreach($povtors as $from_id => $p){
$to_id = $assign[$p];
sql("DELETE FROM nuke_topmusic_artist WHERE idartist='$from_id'");
}
 
Сверху