Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск парных записей в базе (дубликаты по набору полей) / 6 сообщений из 6, страница 1 из 1
26.07.2014, 12:56:14
    #38706512
qshar7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
Добрый день.
Мне необходимо найти в базе все записи, которая имеет N полей с одинаковыми значениями как минимум с одной из оставшихся записей. Как частный вариант - это когда отличается значение только одного значимого поля (помимо ID и неактуальных полей).
Т.е., если есть база вида:
id | поле1 | поле2 | поле3 | поле4 |
------------------------------------
1 | 111 | 22 | 333 | 44
2 | 111 | 22 | 555 | 66
3 | 222 | 33 | 645 | 77
4 | 222 | 33 | 777 | 88
5 | 333 | 44 | 555 | 99
6 | 444 | 44 | 555 | 11
7 | 222 | 33 | 111 | 22

и надо найти пары (дубликаты) по полям 1 и 2, то в выборку должны попасть строки с ID 1,2,3,4,7.

Можно ли решить данную задачу без применения хранимых процедур? Возможно, независимо от ответа, есть какое-то готовое решение?
...
Рейтинг: 0 / 0
26.07.2014, 15:14:27
    #38706563
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
qshar7,

group by + having count
...
Рейтинг: 0 / 0
27.07.2014, 19:21:46
    #38706833
qshar7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
tanglir,

SELECT *
FROM base as t
WHERE (t.field1 = 1)
AND (
(t.field2, t.field3, t.field4)
IN (
SELECT t2.field2, t2.field3, t2.field4
FROM base as t2
GROUP BY t2.field2, t2.field3, t2.field4
HAVING COUNT( * ) >1
)
);


выдает ерунду.
...
Рейтинг: 0 / 0
28.07.2014, 07:36:25
    #38706948
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
вы хотитеqshar7надо найти пары (дубликаты) по полям 1 и 2, а пишетеqshar7GROUP BY t2.field2, t2.field3, t2.field4, и после этого удивляетесь, что запрос
qshar7выдает ерунду.?
...
Рейтинг: 0 / 0
28.07.2014, 10:56:50
    #38707050
qshar7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
tanglir,

ну сначала все-таки надо сгрупировать все записи по комбинации полей-дубликатов? Надо ведь знать, какие комбинации имеют дубликаты. И этот запроса отдельно - работает. А вот правильно сделать выборку на основании его результата - не получается.
...
Рейтинг: 0 / 0
28.07.2014, 11:08:33
    #38707068
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск парных записей в базе (дубликаты по набору полей)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
FROM table
WHERE (fld1,fld2) IN (
                      SELECT fld1,fld2
                      FROM table
                      GROUP BY fld1,fld2
                      HAVING COUNT(id)>1
                     )
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Поиск парных записей в базе (дубликаты по набору полей) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]