Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用have查找重复项_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 使用have查找重复项

Sql 使用have查找重复项,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想在下表中找到所有的副本。 我知道我可以使用CTE包装查询,然后语法就正确了。 我对能够直接访问cnt柱的解决方案感兴趣。 我还想使用countoverpartitionby子句 CREATE TABLE #People ( ID INT, [NAME] varchar(50), AGE INT ) INSERT INTO #PEOPLE SELECT 1,'Mark',23 UNION SELECT 2,'Tomm',23 UNION SELECT 3,'Ann',26 select *

我想在下表中找到所有的副本。 我知道我可以使用CTE包装查询,然后语法就正确了。 我对能够直接访问cnt柱的解决方案感兴趣。 我还想使用countoverpartitionby子句

CREATE TABLE #People
(
ID INT,
[NAME] varchar(50),
AGE INT
)
INSERT INTO #PEOPLE
SELECT 1,'Mark',23
UNION
SELECT 2,'Tomm',23
UNION
SELECT 3,'Ann',26

select * from #People


select [NAME] , AGE, count(1) over (partition by [NAME], AGE) as cnt 
from #People 
having count(cnt) > 2
为什么不直接使用分组方式呢

如果您想要副本,那么比较可能应该是:

having count(*) >= 2
为什么不直接使用分组方式呢

如果您想要副本,那么比较可能应该是:

having count(*) >= 2

优雅而简单的方法总是最好的:Dresult of this query:Invalid column name'cnt'。需要COUNT*>2。在选择之前,将先处理HAVING。要找到重复项,我会说wehre COUNT*>1actually@DougCoats . . . 我调整了答案。>2由OP提供。优雅而简单的方法总是最好的:此查询的结果:无效列名“cnt”。需要具有COUNT*>2。在选择之前,将先处理HAVING。要找到重复项,我会说wehre COUNT*>1actually@DougCoats . . . 我调整了答案。OP提供了>2的数据。