2017-04-03 19 views
0

タイトルで簡単に説明しようとします。のは、私が[]と呼ばれるテーブルを持っており、その中の各レコードは、カラムとして持つ、人であることを言ってみましょう: 名前HashId。 は今、私のコードで私は、例えば同様に、基準の名前と姓として使用することによって、この表に検索できるようにしています:両方の検索基準に一致するレコードをSQLサーバーで検索して返すだけでなく、他のレコードと比較する

SELECT * 
FROM [Persons] 
where Name = '..' AND Surname = '..' 

これは、検索条件に一致するすべてのレコードを返します。 3番目の列は、名前と姓に依存する計算列です。だから、 "Alex Foo"という名前の人を探して、データベースに同じ名前と姓の2人がいる場合、彼らのHashIDは同じになります。私が今したいのは、私のクエリがそれらの2つのレコードを返すのではなく、ただ1つだけです。クエリは、HashIDが同じかどうかをチェックできなければならず、その場合、これを満たすすべてのレコードルール。この目的を達成するためにSQLクエリを変更するにはどうすればよいですか?前もって感謝します!

編集:私はあなたの答えで明らかになった情報を省略しました。私は次の理由でHashIdをフィルタリングする必要があります: "Alex"と "alex"という名前のレコードが2つある場合、それらのHashIdは自分のロジックに従って同じになります。あなたが私に与えた説明よりも複雑です)。しかし、 "alex"という名前の単純な選択は、それぞれ "Alex"と "alex"という名前の2つの異なるレコードを返します。そのため、ハッシュIDが重要です。

+0

サンプルデータは、これは少し不明です。 name + surnameのハッシュ値が常に同じ場合、なぜHashIDが同じかどうかをチェックする必要がありますか?* name + surnameを検索して検索しているのはなぜですか? –

+1

'DISTINCT名、姓、ハッシュIDを選択しますか?異なる値を返すために 'HashId'カラムは必要ありません –

答えて

1

姓、ハッシュIDでグループ化することはできませんか?このよう

:すべてそこの列が同じであれば、それはこの

編集のために1行を返します

SELECT name,Surname,HashId 
FROM [Persons] 
where Name = '..' AND Surname = '..' 
GROUP BY name,Surname,HashId 

パナギオティスKanavosが指摘したように、これは同じになりますコラムではっきりとしたことをするように。多分、これはよりクリーンです。このように:

SELECT DISTINCT name,Surname,HashId 
FROM [Persons] 
where Name = '..' AND Surname = '..' 
+2

これは' SELECT DISTINCT'と同じです。 –

+0

@PanagiotisKanavos:それは本当です。私は答えを更新した – Arion

関連する問題