Как найти дубликаты в 2 столбцах, а не в 1

Только что нашел ответ. Просто пришлось использовать DataFrame.values ​​

94
задан Eric Leschinski 16 January 2015 в 22:52
поделиться

5 ответов

Необходимо настроить составной ключ между этими двумя полями. Это потребует уникального stone_id и upcharge_title для каждой строки.

До нахождения существующих дубликатов пробуют это:

select   stone_id,
         upcharge_title,
         count(*)
from     your_table
group by stone_id,
         upcharge_title
having   count(*) > 1
177
ответ дан Miyagi Coder 24 November 2019 в 06:02
поделиться

Можно найти дубликаты как это..

Select
    stone_id, upcharge_title, count(*)
from 
    particulartable
group by 
    stone_id, upcharge_title
having 
    count(*) > 1
7
ответ дан Jason Punyon 24 November 2019 в 06:02
поделиться

Кстати, составное ограничение на уникальность данных на таблицу препятствовало бы тому, чтобы это произошло во-первых.

ALTER TABLE table
    ADD UNIQUE(stone_id, charge_title)

(Это - допустимый T-SQL. Не уверенный в MySQL.)

3
ответ дан P Daddy 24 November 2019 в 06:02
поделиться

Найти дубликаты:

select stone_id, upcharge_title from tablename group by stone_id, upcharge_title having count(*)>1

Для ограничения для предотвращения этого в будущем создайте составной уникальный ключ на этих двух полях.

4
ответ дан Ian Nelson 24 November 2019 в 06:02
поделиться

этот пост 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...

спасибо всем

0
ответ дан 24 November 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: