() , SOUNDEX(). , , , , . , . MySQL, , WHERE
[...] AND SOUNDEX(p.first_name) = SOUNDEX(contacts.first_name) [...]
, , ( !), !
, . , HAVING COUNT(*) > 1, , / !?
- :
SELECT c1.id as contact_id,
c2.id as similar_id
FROM contacts c1
JOIN contacts c2
ON c2.id <> c1.id
AND c2.deleted = 0
AND SOUNDEX(c2.first_name) = SOUNDEX(c1.first_name)
AND SOUNDEX(c2.last_name) = SOUNDEX(c1.last_name)
WHERE c1.deleted = 0
ORDER BY c1.date_entered DESC
, ,
SELECT c1.id as contact_id,
c2.id as similar_id
FROM contacts c1
JOIN contacts c2
ON c2.id <> c1.id
AND c2.deleted = 0
AND c2.first_name_soundex = c1.first_name_soundex
AND c2.last_name_soundex = c1.last_name_soundex
WHERE c1.deleted = 0
ORDER BY c1.date_entered DESC
first_name_soundex SOUNDEX (first_name) ..
deleted, first_name_soundex, last_name_soundex.
(AFAIK MySQL , deleted = 0).