【发布时间】:2010-03-16 17:43:29
【问题描述】:
我有一个 SQLite 数据库,其中包含人员姓氏、名字、部门,我需要进行查询以显示任何具有相同名字和姓氏的人。我发现以下语句可以满足我对单个字段的要求,但是当我尝试使用它来提取只有姓氏相同的所有记录时,它似乎对我不起作用。我该怎么做?
Select myField From myTable Group by myField Where count(myField)>1
【问题讨论】:
我有一个 SQLite 数据库,其中包含人员姓氏、名字、部门,我需要进行查询以显示任何具有相同名字和姓氏的人。我发现以下语句可以满足我对单个字段的要求,但是当我尝试使用它来提取只有姓氏相同的所有记录时,它似乎对我不起作用。我该怎么做?
Select myField From myTable Group by myField Where count(myField)>1
【问题讨论】:
尝试:
Select
firstname,LastName,Count(*)
From myTable
Group by firstname,LastName
HAVING Count(*)>1
GROUP BY 组合命名值相同的行。
HAVING 删除不符合条件的组。
上述查询将列出名字和姓氏,以及所有实际有重复的名字/姓氏的重复计数。
【讨论】:
首先,您需要使用 HAVING,而不是 WHERE 来限定 GROUPed BY 结果:
SELECT myField FROM myTable GROUP BY myField HAVING COUNT(myField) > 1
其次,您可以将其扩展到多个列,如下所示:
SELECT MyCol1, MyCol2 FROM MyTable
GROUP BY MyCol1, MyCol2
HAVING COUNT(*) > 1
【讨论】: