DrakonHaSh
Постоялец
- Регистрация
- 29 Июн 2010
- Сообщения
- 357
- Реакции
- 122
2-й запрос (тот, который на удаление) должен удалить количество строк, выдаваемых запросом:Ладно с двумя полями, как бы по одному полю удалить корректно.
Делаю запрос:
Он выводит количество дублей.PHP:SELECT name, COUNT(name) AS cnt FROM tablename GROUP BY name HAVING ( COUNT(name) > 1 )
Удаляю так:
Но удаляется раза в 3 больше записей чем находится предыдущим запросом.PHP:DELETE t1 FROM tablename t1, tablename t2 WHERE t1.name=t2.name AND t1.ID > t2.ID
PHP:
SELECT
(# общее количество строк в таблице tablename, которые имеют не уникальный name
SELECT SUM(cnt) FROM
(SELECT NAME, COUNT(NAME) AS cnt
FROM tablename GROUP BY NAME
HAVING ( COUNT(NAME) > 1 )
)x1
)
-
(# количество name, которые встречаются в таблице tablename более одного раза
SELECT COUNT(*) FROM
(SELECT NAME, COUNT(NAME) AS cnt
FROM tablename GROUP BY NAME
HAVING ( COUNT(NAME) > 1 )
)x2
)
AS rowsToDel
=>snpru написал(а):Нужно удалить записи из таблицы, у которых 2 поля одинаковые.
Поля code и name, если у 2ух строк оба этих поля совпадают то удалять, если совпадает лишь одно поле, то оставляем.
PHP:
DELETE
t1
FROM
tablename t1,
tablename t2
WHERE t1.ID > t2.ID
AND t1.code = t2.code
AND t1.name = t2.name