У меня есть таблица, в которой много повторяющихся записей, а именно tbl_voter с идентификатором в качестве первичного ключа, автоматическое увеличение. и есть еще одна таблица tbl_notes, в которой есть заметки для каждого избирателя. tbl_notes может иметь ноль или более записей о каждом избирателе. Идентификатор из tbl_voter — это внешний ключ в файле tbl_notes.
Проблема в том, что, поскольку в таблице избирателей есть дубликаты, в таблице заметок также есть дубликаты.
Например: tbl_voter
ID Name Address
01 abc xyz
02 def pqr
03 abc xyz
04 abc xyz
05 abc xyz
06 def pqr
tbl_notes
Noteid ID Note
A001 01 aaaaaa
A002 02 bbbbbb
A003 01 cccccc
A004 03 dddddd
A005 03 eeeeee
A006 04 ffffff
A007 05 gggggg
A008 01 hhhhhh
Я хочу найти все идентификаторы оригинальных и их дубликатов, чтобы обновить tbl_notes
Например: tbl_voter
ID Name Address
01 abc xyz
02 def pqr
tbl_notes
Noteid ID Note
A001 01 aaaaaa
A002 02 bbbbbb
A003 01 cccccc
A004 01 dddddd
A005 01 eeeeee
A006 01 ffffff
A007 01 gggggg
A008 01 hhhhhh
До сих пор я пытался найти дубликаты записей, но это дает мне как оригинальные, так и дубликаты. Мне нужен запрос, который возвращает меня:
RealID DuplicateID
01 03
01 04
01 05
02 06
Запрос, который я пробовал:
select *
from tbl_voter a inner join
(
select id,firstname,lastname,zip,housenumber,COUNT(*) AS dupes from tbl_voter
where riding = '35019'
group by
firstname,lastname,zip,housenumber
having count(*) > 1
) b on a.firstname = b.firstname
and a.lastname = b.lastname
and a.zip = b.zip
and a.firstname is not null
and b.firstname is not null
and a.riding='35019'
and a.housenumber=b.housenumber
order by a.firstname asc
Если я добавлю идентификатор в запрос выбора, он выдает ошибку, говорящую о том, что идентификатор не может использоваться в группе по запросу, что правильно, поскольку идентификаторы будут все время разными.
Запрос с учетом идентификаторов:
select a.id as realid, b.id as dupid, a.firstname,a.lastname,a.zip,a.housenumber
from tbl_voter a inner join
(
select id,firstname,lastname,zip,housenumber,COUNT(*) AS dupes from tbl_voter
where riding = '35019'
group by
id,firstname,lastname,zip,housenumber
having count(*) > 1
) b on a.firstname = b.firstname
and a.lastname = b.lastname
and a.zip = b.zip
and a.firstname is not null
and b.firstname is not null
and a.riding='35019'
and a.housenumber=b.housenumber
order by a.firstname asc
Если я получу дубликаты и настоящие идентификаторы, я могу обновить файл tbl_notes.
Спасибо, Шашанк
GROUP_CONCAT
можно использовать для предоставления всех идентификаторов, где строка, столбец = строка, идентификатор столбца начинается с поиска этого - person andrew   schedule 08.07.2014