【发布时间】:2017-04-03 12:32:15
【问题描述】:
我将尝试以简单的方式向您解释我在标题中的意思。假设我有一个名为 [Persons] 的表,其中的每条记录都是一个人,具有以下列: 姓名、姓和HashId。 现在,在我的代码中,我可以使用名称和姓氏作为条件在此表中进行搜索,例如:
SELECT *
FROM [Persons]
where Name = '..' AND Surname = '..'
这将返回所有符合搜索条件的记录。第三列是一个计算列,取决于姓名和姓氏。因此,如果我搜索一个叫“Alex Foo”的人,并且在数据库中有 2 个同名同姓的人,他们的 HashID 将是相同的。我现在想要的是我的查询不返回这 2 条记录,而只返回一条.. 查询必须能够检查 HashID 是否相同,在这种情况下,只返回 1 条记录满足这一点规则。我怎样才能修改我的 SQL 查询来达到这个目的?提前致谢!
编辑:我省略了您的答案现在清楚的信息。由于以下原因,我必须过滤 HashId:如果有 2 条名为“Alex”和“alex”的记录,根据我的逻辑,它们的 HashId 将是相同的,这是我的目的的正确逻辑(整个代码后面比我给你的解释更复杂)。但是对名称“alex”的简单选择将返回两个不同的记录,分别名称为“Alex”和“alex”。这就是 HashId 很重要的原因。
【问题讨论】:
-
样本数据会有所帮助,这有点不清楚。如果 name+surname 的 hash 始终相同,为什么在搜索 name+surname 时需要检查 HashID 是否相同?
-
SELECT DISTINCT name,Surname,HashId?您不需要HashId列来返回不同的值
标签: mysql sql sql-server