2010-11-25 14 views
8

テーブルに重複した電話番号が含まれているかどうかを確認するSQL Serverスクリプトを作成する方法を知っていますか?SQL Serverで重複するレコードを確認するには

例:私は重複した電話番号にそれらのレコードを返すことができ、SQL Serverのスクリプトを書くことができますどのように私は次のようなデータ

name telephone 
alvin 0396521254 
alan 0396521425 
amy 0396521425 

を顧客と呼ばれるテーブルを持っている

答えて

20

like

SELECT * 
FROM Table t 
WHERE EXISTS (
        SELECT 1 
        FROM Table tI  
        WHERE tI.Telephone = t.Telephone 
        AND  tI.Name != t.Name 
       ) 
+0

@astander:この片頭痛がなくなる方が良いでしょう。私がリードを維持するには、もっと参加する必要があります。 –

+0

あなたは巨大なenougバッファをそのまま持っています。 –

+0

@astander:私はあなたが私の30Kバッファ内にいるのではないかと心配しています。あなたは、平衡を取り戻すことができるようにする必要があります。 :p –

0

誰かがより良い解決策を思いつくと確信していますが、とにかく私の原点を失ってしまいます。

私の場合は、GROUP BY句とともに集計COUNT関数を使用します。多くの重複が存在するかのカウントとの重複の電話番号を返す必要があります

SELECT telephone, COUNT(telephone)[Entries] FROM table1 
GROUP BY telephone 
HAVING Entries > 1 

は私のようなSQL文を書くでしょう。それらの重複のためにテーブルに関連レコードを表示するには

SELECT c.telephone 
    FROM CUSTOMER c 
GROUP BY c.telephone 
    HAVING COUNT(*) > 1 

SELECT c.* 
    FROM CUSTOMER c 
    JOIN (SELECT c.telephone 
      FROM CUSTOMER c 
     GROUP BY c.telephone 
     HAVING COUNT(*) > 1) x ON x.telephone = c.telephone 
+2

HAVING以外のWHERE句をGROUP BYの後に使用できるデータベースを使用していますか? –

+1

SQL Serverは、GROUP BYを使用するとWHEREを許可します。結果セットの前に発生する可能性がありますので、この場合は結果セットが生成された後HAVINGが適用される可能性が高いでしょう。 http://technet.microsoft.com/en-us/library/ms177673.aspx –

1

あなたは

;WITH Duplicates AS (
     SELECT Telephone 
     FROM Table 
     HAVING COUNT(1) > 1 
) 
SELECT t.* 
FROm Table t INNER JOIN 
     Duplicates d ON t.Telephone = d.Telephone 

、あるいは何かのような何かを試すことができ、重複して値を表示するには

関連する問題