我将尝试以简单的方式向您解释我在标题中的含义。我们假设我有一个名为[人员]的表格,其中的每个记录都是一个人,具有以下列: 名称,姓氏和 HashId 。 现在,在我的代码中,我可以使用名称和姓氏作为标准在此表中搜索,例如:
SELECT *
FROM [Persons]
where Name = '..' AND Surname = '..'
这将返回与搜索条件匹配的所有记录。第3列是一个取决于Name和Surname的计算列。因此,如果我搜索一个名为" Alex Foo"在数据库中有2个人姓名相同,他们的HashID也是一样的。我现在想要的是我的查询没有返回那2条记录但只有一条...查询必须能够检查HashID是否相同,在这种情况下只返回1条记录对于那些满足这个规则的人。我如何修改我的SQL查询以达到此目的?提前谢谢!
编辑:我省略了一些信息,现在你的答案已经清楚了。我必须过滤HashId,原因如下:如果有2条记录名称为" Alex"和#34; alex",根据我的逻辑,他们的HashId将是相同的,这是我的目的的正确逻辑(背后的整个代码比我给你的解释更复杂)。但是简单地选择名称" alex"将返回2个不同的记录,分别名称" Alex"和" alex"。这就是HashId很重要的原因。
答案 0 :(得分:1)
你不能只按姓名,姓氏,HashId分组吗?
像这样:
SELECT name,Surname,HashId
FROM [Persons]
where Name = '..' AND Surname = '..'
GROUP BY name,Surname,HashId
如果所有列都相同,那么它将为此
返回一行修改强>
Panagiotis Kanavos指出,这与在栏目上做一个截然不同的做法是一样的。也许这更清洁。像这样:
SELECT DISTINCT name,Surname,HashId
FROM [Persons]
where Name = '..' AND Surname = '..'