SQL映射来自另一个表的重复项
SQL中是否有方法映射重复条目并从另一个表中获取数据。我需要映射表2中的原始文件名,但数据来自表1,并使用新文件名作为映射参考?我试着用分区做行数,但我哪儿也不去 表1:SQL映射来自另一个表的重复项,sql,sql-server,duplicates,Sql,Sql Server,Duplicates,SQL中是否有方法映射重复条目并从另一个表中获取数据。我需要映射表2中的原始文件名,但数据来自表1,并使用新文件名作为映射参考?我试着用分区做行数,但我哪儿也不去 表1: new filename original filename text_001.pdf test1333.pdf text_001.pdf test4443.pdf hello2332.pdf world1234.txt hello2332.pdf world3331.
new filename original filename
text_001.pdf test1333.pdf
text_001.pdf test4443.pdf
hello2332.pdf world1234.txt
hello2332.pdf world3331.txt
表2:
EE new filename
00001 text_001.pdf
00001 text_001.pdf
00002 hello2332.pdf
00002 hello2332.pdf
输出表:
EE new filename original filename(entries coming from table 1)
00001 text_001.pdf test1333.pdf
00001 text_001.pdf test4443.pdf
00002 hello2332.pdf world1234.txt
000002 hello2332.pdf world3331.txt
我推荐你加入!如果您还需要表2中文件未重命名的行,则可能需要左连接
select*from table2 t2在t1上连接table1 t1。new_filename=t2。new_filename
?由于第一个表中的新文件名没有用于分离重复项的列,因此没有通用方法。您需要修复数据。第一个子查询(使用选择distinct
)删除表2中的重复项(如果有),然后与原始文件的左连接将新文件与旧文件关联。使用CTE(如上所示)是完全可选的。@Used\u由\u使用您的想法已经奏效:)谢谢。我不必使用CTE。我的查询中缺少的是不同的:)如果我需要用结果更新表2呢?我不认为这行得通?
;WITH xx AS
(SELECT DISTINCT
[EE],
[new filename]
FROM [Table 2]
)
SELECT
xx.[EE],
xx.[new filename],
a.[original filename]
FROM xx
LEFT JOIN [table 1] as a
ON a.[new filename] = xx.[new filename]