0

データベースをチェックして重複エントリを特定していますが、それができる一方で、データベースをサニタイズできるように、他の列 (アクティブ、ユーザー ID など) も結果に表示する必要があります。簡単に思えますが、うまくいきません。
MSSQL を使用するには、何よりも一般的なアプローチが必要です。
つまり、要約すると、重複を識別するためのほとんど複雑なクエリが機能していますが、最終出力で「ユーザーはアクティブです」または「ユーザーは #4367」などの結果を単純に表示することはまだできません。前もって感謝します。CREATE VIEW が答えかもしれないと思ったのですが、まだ運がありません。JOIN は複雑すぎて機能しすぎて、WHERE が詰まる (構文が悪い?)

4

3 に答える 3

2

を使用Group Byして追加の列を追加すると、追加の列によってもグループ化されます。

サブクエリとグループ化されていないメイン クエリが必要です。

SELECT * 
FROM users 
WHERE fullname IN (SELECT fullname 
                   FROM users 
                   GROUP by fullname 
                   HAVING ( COUNT(fullname) > 1 ))

SELECT *を上記に変更することもできますSELECT DISTINCT *

于 2013-09-17T01:39:32.470 に答える
0

単純に自己結合を使用してください。このようなもの (値は ID の重複をチェックするものであり、一意の行 ID であり、ユーザー ID はレポートする別の値です):

 SELECT a.Value, a.ID, a.UserID
   FROM MyTable a
   JOIN MyTable b
     ON (a.Value = b.Value and a.ID <> b.ID)
  ORDER BY a.ID
于 2013-09-17T01:38:51.937 に答える