Только что нашел ответ. Просто пришлось использовать DataFrame.values
Необходимо настроить составной ключ между этими двумя полями. Это потребует уникального stone_id и upcharge_title для каждой строки.
До нахождения существующих дубликатов пробуют это:
select stone_id,
upcharge_title,
count(*)
from your_table
group by stone_id,
upcharge_title
having count(*) > 1
Можно найти дубликаты как это..
Select
stone_id, upcharge_title, count(*)
from
particulartable
group by
stone_id, upcharge_title
having
count(*) > 1
Кстати, составное ограничение на уникальность данных на таблицу препятствовало бы тому, чтобы это произошло во-первых.
ALTER TABLE table
ADD UNIQUE(stone_id, charge_title)
(Это - допустимый T-SQL. Не уверенный в MySQL.)
Найти дубликаты:
select stone_id, upcharge_title from tablename group by stone_id, upcharge_title having count(*)>1
Для ограничения для предотвращения этого в будущем создайте составной уникальный ключ на этих двух полях.
этот пост SO помог мне, но я тоже хотел знать, как удалить и сохранить одну из строк... вот решение PHP для удаления дублирующихся строк и сохранения одной (в моем случае было только 2 столбца и это в функции для очистки дублирующихся ассоциаций категорий)
$dupes = $db->query('select *, count(*) as NUM_DUPES from PRODUCT_CATEGORY_PRODUCT group by fkPRODUCT_CATEGORY_ID, fkPRODUCT_ID having count(*) > 1');
if (!is_array($dupes))
return true;
foreach ($dupes as $dupe) {
$db->query('delete from PRODUCT_CATEGORY_PRODUCT where fkPRODUCT_ID = ' . $dupe['fkPRODUCT_ID'] . ' and fkPRODUCT_CATEGORY_ID = ' . $dupe['fkPRODUCT_CATEGORY_ID'] . ' limit ' . ($dupe['NUM_DUPES'] - 1);
}
the (limit NUM_DUPES - 1) is what preserves the single row...
спасибо всем