0

みんな緊急の助けが必要です!

さて、158,000 を超えるレコードを持つ mysql データベースがあり、その中に重複データがいくつかあります。これらの重複データをリストしたい より明確にするために、私が探しているものは次のとおりです。

mysql テーブル名はpostalです。列は id、通り、郵便番号、地域、都市です

  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) には異なる通りの値がありますが、1 つの地域名のみが許可されます。また、異なる 郵便番号(例: id=3,4,5) は、異なる地域を持つ場合と持たない場合があります。これについてあまり混乱しないでください。私が直面している問題は、次のような記録を見つけたことです。

  1. id:11、郵便番号: 111111、通り: street1、地域: locality1、都市: cityA

  2. id:25、zipcode: 111111、通り: street2、地域: locality2、都市: cityA

  3. id:56、郵便番号: 111111、通り: street3、地域: locality3、都市: cityA

同じ 郵便番号(例: id=11,25,56) が、許可されていない完全に異なる地域値を持っていることがわかります。同じ郵便番号に許可される地域値は 1 つだけです。

異なる地域値を含む郵便番号を除外するための SQL クエリ文字列を教えてください。150,000 を超えるレコードはありません。

注意: ピンコードに従って値をソートできる SQL クエリを求めているわけではありません。異なる地域値を持つ郵便番号を見つける方法を探しています。

4

2 に答える 2

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 に答える
0

これを試して:

SELECT 
    postal.*
FROM 
    postal 
GROUP BY 
    zipcode
HAVING
    COUNT(DISTINCT(locality)) > 1
于 2013-01-26T18:07:57.417 に答える