我想编写一个 SQL 查询,为所有用户提供 user_id、last_name 和 Social_security_number,这些用户的另一个用户具有相同的姓氏和相同的 SSN 最后四位 RIGHT。所以如果一个有完整的 SSN 而另一个只有最后四个,我只想匹配最后四个。如何编写查询以获取拥有超过 1 条记录的所有用户?
最佳答案
SELECT orig.user_id, orig.last_name, orig.Social_security_number,
dupe.user_id, dupe.last_name, dupe.Social_Security_number
FROM yourtable AS orig
INNER JOIN yourtable AS dupe ON
(orig.last_name=dupe.last_name) AND
(RIGHT(orig.Social_Security_number, 4) = RIGHT(dupe.Social_Security_Number, 4)) AND
(orig.user_id <> dupe.user_id)
基本上在您存储它的任何表上进行自连接,连接姓氏字段、SSN 的最后 4 位数字和一个边缘情况:因为您是自连接,所以每条记录都将匹配本身在“欺骗”表中,因此明确排除该假匹配。
关于mysql - 如何根据 SSN 获取重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837527/