Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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映射来自另一个表的重复项_Sql_Sql Server_Duplicates - Fatal编程技术网

SQL映射来自另一个表的重复项

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.

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.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]