【问题标题】:filter out mysql duplicate record in multiple rows过滤掉多行中的mysql重复记录
【发布时间】:2013-01-10 11:37:06
【问题描述】:

各位急需帮助!

我有一个 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 表的数据的粗略草图:postal

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

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

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

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

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

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

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

【问题讨论】:

  • 冷静下来。那些感叹号让我很紧张。 150,000 条记录对于数据库来说并没有那么大。

标签: php mysql database xampp wamp


【解决方案1】:

试试这个:

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

【讨论】:

  • 我不是要求可以根据 pincode 对值进行排序的 sql 查询,我正在寻找一种方法来查找包含不同位置值的邮政编码
  • bhai,这只是给我一个结果,它也显示具有相同邮政编码的地区。我需要一个显示不同代码的地区的列表
【解决方案2】:
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

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

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 2012-09-09
    • 2018-09-29
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2020-02-18
    • 2013-08-25
    相关资源
    最近更新 更多