Sql server SQL Server 2008列出具有重复值的行

Sql server SQL Server 2008列出具有重复值的行,sql-server,sql-server-2008,sql-server-2008-r2,Sql Server,Sql Server 2008,Sql Server 2008 R2,我有一个SQL server(2008 R2),它将文件的元数据存储在表中。每个文件都有自己的行,每个文件都计算并存储了一个MD5。我想打印一个MD5值在服务器中多次出现的文件列表,这样我就可以查看并识别随时间重复的文件,并决定删除哪个文件。我有一个相当混乱的命令,里面有几个内部连接,我发现这些连接在几年前适用于我的MySQL服务器,但将其修改为SQL server对我来说还不起作用。有人知道更简单的方法吗?下面是我尝试过的修改过的MySQL命令。谢谢 select [IGCSlidesDB].

我有一个SQL server(2008 R2),它将文件的元数据存储在表中。每个文件都有自己的行,每个文件都计算并存储了一个MD5。我想打印一个MD5值在服务器中多次出现的文件列表,这样我就可以查看并识别随时间重复的文件,并决定删除哪个文件。我有一个相当混乱的命令,里面有几个内部连接,我发现这些连接在几年前适用于我的MySQL服务器,但将其修改为SQL server对我来说还不起作用。有人知道更简单的方法吗?下面是我尝试过的修改过的MySQL命令。谢谢

select [IGCSlidesDB].[dbo].[FilePath]
, [IGCSlidesDB].[dbo].[FileSize]
, [IGCSlidesDB].[dbo].[MD5] from [IGCSlidesDB].[dbo].[MD5Tool]
inner join ( select 
    [IGCSlidesDB].[dbo].[FilePath],
    [IGCSlidesDB].[dbo].[FileSize],
    [IGCSlidesDB].[dbo].[MD5] from [IGCSlidesDB].[dbo].[MD5Tool] group by [MD5] having count(*)>1) 
as t2 on ([IGCSlidesDB].[dbo].[MD5Tool].[MD5]=[t2].[MD5])
order by [IGCSlidesDB].[dbo].[MD5Tool].[FilePath];

如果我理解正确,对于MD5Tool表中复制的每个MD5,是否要返回这些行

尝试一下:

SELECT M.FilePath, M.FileSize, M.MD5
FROM MD5Tool M
INNER JOIN ( 
    SELECT MD5 FROM MD5Tool GROUP BY MD5 HAVING COUNT(*)>1
) M2 ON M.MD5 = M2.MD5
ORDER BY M.FilePath;
这是我的答案


祝你好运。

如果我理解正确,对于MD5Tool表中复制的每个MD5,是否要返回这些行

尝试一下:

SELECT M.FilePath, M.FileSize, M.MD5
FROM MD5Tool M
INNER JOIN ( 
    SELECT MD5 FROM MD5Tool GROUP BY MD5 HAVING COUNT(*)>1
) M2 ON M.MD5 = M2.MD5
ORDER BY M.FilePath;
这是我的答案

祝你好运。

试试这个:

;WITH CTE AS
(
    SELECT  *, 
            COUNT(*) OVER(PARTITION BY [MD5]) Total
    FROM [IGCSlidesDB].[dbo].[MD5Tool]
)
SELECT *
FROM CTE 
WHERE Total > 1
试试这个:

;WITH CTE AS
(
    SELECT  *, 
            COUNT(*) OVER(PARTITION BY [MD5]) Total
    FROM [IGCSlidesDB].[dbo].[MD5Tool]
)
SELECT *
FROM CTE 
WHERE Total > 1
另一种可能性:

select filepath, filesize, md5 
     from MD5Tool 
where md5 in 
     (select md5 from md5tool group by md5 having count(1) > 1)
order by filepath
另一种可能性:

select filepath, filesize, md5 
     from MD5Tool 
where md5 in 
     (select md5 from md5tool group by md5 having count(1) > 1)
order by filepath

在我看来,你的四部分命名很奇怪。格式应为
ServerName.DatabaseName.SchemaName.ObjectName
。顺便说一句,Dbo是默认的模式名。我觉得你的四部分命名很奇怪。格式应为
ServerName.DatabaseName.SchemaName.ObjectName
。Dbo是默认的模式名,顺便说一句。这同样有效,谢谢!这和上面的答案都返回了相同的行。这也同样有效,谢谢!这和上面的答案都返回了相同的行。