过滤掉多行中的mysql重复记录

时间:2013-01-26 18:03:56

标签: php mysql database xampp wamp

需要紧急帮助!

我有一个mysql数据库,它有超过158,000条记录,其中有一些重复的数据。我希望列出这些重复的数据 更清楚我正在寻找的是:

mysql表名是邮政。列是id,street,zipcode,locality和city

  1. id:1,邮政编码:123456,街道:street1,地区:locality1,city:cityA

  2. id:2,邮政编码:123456,街道:street2,地区:locality1,city:cityA

  3. id:3,邮政编码:123456,街道:street3,地区:locality1,city:cityA

  4. id:4,邮政编码:123457,街道:street4,地区:locality1,city:cityA

  5. id:5,邮政编码:123458,街道:street5,地区:locality1,city:cityA

  6. id:6,邮编:166666,街道:street6,地区:locality26,city:cityDE

  7. id:7,邮政编码:177777,街道:street7,地区:locality38,city:cityEF

  8. 允许这些值!这是已输入mysql db表的数据的草图:邮政

    相同的 zipcodes (例如:id = 1,2,3)将具有不同的街道值,但只有一个地区名称是允许的。另外不同的 zipcodes (例如:id = 3,4,5)可能有也可能没有位置。请不要对此感到困惑。 我面临的问题是,我找到了一些这样的记录:

    1. id:11,邮政编码:111111,街道:street1,地区:locality1,city:cityA

    2. id:25,邮政编码:111111,街道:street2,地区:locality2,city:cityA

    3. id:56,邮政编码:111111,街道:street3,地区:locality3,city:cityA

    4. 你可以注意到相同的 zipcode (例如:id = 11,25,56)具有完全不同的 locality 值,这是不允许。相同的邮政编码只允许一个地点值。

      请建议我使用sql查询字符串过滤掉包含不同位置值的zipcode。请不要超过150,000条记录。

      注意:我不是要求sql查询可以根据pincode对值进行排序,我正在寻找一种方法来查找具有不同 locality 值的 zipcode 。< / p>

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT 
    postal.*
FROM 
    postal 
GROUP BY 
    zipcode
HAVING
    COUNT(DISTINCT(locality)) > 1

答案 1 :(得分:0)

SELECT id,locality,zipcode,locality,city
FROM postal t1
WHERE EXISTS (

SELECT id,locality,zipcode,locality,city
FROM postal t2
WHERE t2.id <> t1.id
AND t2.zipcode = t1.zipcode
AND t2.locality != t1.locality
)
LIMIT 0,30

帮助我解决了这个问题。现在它的工作!