2017-04-03 33 views
0

我將嘗試以簡單的方式解釋您在標題中的含義。比方說,我有一個名爲表[人員],並在其中的每個記錄是一個人,有欄目: 名稱HashId。 現在,在我的代碼,我能夠通過使用作爲標準名稱和姓在此表中進行搜索,例如像:在SQL服務器中搜索並返回符合兩個搜索條件但同時與其他記錄相比較的記錄

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

這將返回所有符合搜索條件的記錄。第三列是一個計算列,取決於名稱和姓氏。所以如果我搜索一個叫「Alex Foo」的人,並且在數據庫中有兩個同名和同名的人,他們的HashID將是相同的。我現在想要的是我的查詢不會返回這2條記錄,但只有一條記錄..查詢必須能夠檢查HashID是否相同,並且在那種情況下,只返回1條滿足這個條件的記錄規則。我如何修改我的SQL查詢以達到此目的?提前致謝!

編輯:我省略了一個信息,現在清楚你的答案。我必須對HashId進行過濾,原因如下:如果有2個記錄的名稱爲「Alex」和「alex」,那麼他們的HashId將根據我的邏輯是相同的,這是我的目的的正確邏輯(整個代碼後面比我給你的解釋更復雜)。但是簡單地選擇「alex」這個名字就會返回兩個不同的記錄,分別命名爲「Alex」和「alex」。這就是爲什麼HashId很重要。

+0

示例數據會有幫助,這有點不清楚。如果名字+姓氏的散列總是相同的,爲什麼你需要*檢查HashID是否相同*如果你正在尋找名字+姓氏? –

+1

'SELECT DISTINCT name,Surname,HashId'?您不需要'HashId'列來返回不同的值 –

回答

1

難道你不能只按名稱,姓氏,HashId分組嗎?

像這樣:

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