我目前在ID和其他元数据旁边有一个文档路径表,但是使用不同的ID多次引用相同的文件路径。
示例数据集:
ID FullPath
1 \\some\file\path.txt
2 \\some\file\path.txt
3 \\some\file\path.txt
4 \\another\file\path.txt
5 \\another\file\path.txt
我想返回一组不同的路径,不需要其他ID。它可能是一个非常简单的GROUP BY聚合函数,但我无法弄明白。请帮忙!
我想我想要这些内容,但要从子查询而不是路径中选择ID,因为路径会导致它返回所有行。但我不能这样做和GROUP by FullPath!
select *
from Documents
where FullPath in (
select min(FullPath)
from Documents
group by FullPath
)
我追随的结果:
ID FullPath
1 \\some\file\path.txt
4 \\another\file\path.txt
答案 0 :(得分:1)
如果我理解你的问题,有多种方法可以做你想要的。但是使用您选择的结构,子查询应该返回id
而不是文件路径:
select d.*
from Documents d
where d.FullPath in (select min(d2.id)
from Documents d2
group by d2.FullPath
);
我更自然地得到两列:
select fullpath, min(id)
from Documents
group by fullpath;
或者,如果您想要其他列,请使用row_number()
或rank()
。
答案 1 :(得分:0)
你应该使用min(id)
select *
from Documents
where id in (
select min(id)
from Documents
group by FullPath
)
答案 2 :(得分:0)
请使用Like
EXEC(”
DELETE Duplicate_Row from(
SELECT ROW_NUMBER()OVER(PARTITION BY id ORDER BY id)RN
来自文件
)AS Duplicate_Row WHERE Duplicate_Row.RN> 1' )
答案 3 :(得分:0)
我认为你可以使用group by:
SELECT id, FullPath FROM Documents GROUP BY FullPath;
答案 4 :(得分:0)
我会编写一个带字符串的函数,并将字符串返回到最后一个字符串。 例如。 fn_strip_path(' \ PLACE \ Here \ file.txt')返回' \ PLACE \ Here' 当然,fn_strip_path(' \ PLACE \ Here')会返回' \ PLACE'
然后从文档中选择不同的fn_strip_path(full_path)给你想要的