0

伙计们急需帮助!

好吧,我有一个 mysql 数据库,它有超过 158,000 条记录,其中有一些重复的数据。我希望列出这些重复的数据为了更清楚我到底在寻找什么:

mysql 表名是postal。列是 id、street、zipcode、locality 和 city

  1. id:1,邮政编码:123456,街道:street1,地点:locality1,城市:cityA

  2. id:2,邮编:123456,街道:street2,地点:locality1,城市:cityA

  3. id:3,邮编:123456,街道:street3,地点:locality1,城市:cityA

  4. id:4,邮政编码:123457,街道:street4,地点:locality1,城市:cityA

  5. id:5,邮政编码:123458,街道:street5,地点:locality1,城市:cityA

  6. id:6,邮政编码:166666,街道:street6,地区:locality26,城市:cityDE

  7. id:7,邮政编码:177777,街道:street7,地点:locality38,城市:cityEF

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

相同的 邮政编码(例如:id=1,2,3)将具有不同的街道值,但它们只允许使用一个地区名称。此外,不同的 邮政编码(例如:id=3,4,5)可能有也可能没有不同的locality。请不要对此感到困惑。我面临的问题是,我发现了一些这样的记录:

  1. id:11,邮政编码:111111,街道:street1,地点:locality1,城市:cityA

  2. id:25,邮编:111111,街道:street2,地点:locality2,城市:cityA

  3. id:56,邮政编码:111111,街道:street3,地点:locality3,城市:cityA

您会注意到相同的 邮政编码(例如:id=11,25,56)具有完全不同的位置值,这是不允许的。同一邮政编码只允许使用一个位置值。

请向我建议用于过滤掉包含不同位置值的邮政编码的 sql 查询字符串。请不要有超过 150,000 条记录。

注意:我不是要求可以根据 pincode 对值进行排序的 sql 查询,我正在寻找一种方法来查找具有不同位置值的邮政编码。

4

2 回答 2

0

尝试这个:

SELECT 
    postal.*
FROM 
    postal 
GROUP BY 
    zipcode
HAVING
    COUNT(DISTINCT(locality)) > 1
于 2013-01-26T18:07:57.417 回答
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

帮我整理了这个。!现在它的工作!

于 2013-01-26T18:56:02.327 回答