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