2017-10-17 6 views
0

Distinct 문을 사용하여 테이블을 업데이트 할 수 있습니까? 다른 테이블에서 항목을 매핑하지만 여기에는 table1에 중복 항목이있는 쿼리가 있습니다. 별개의 명령문을 제거하면 출력이 잘못되었습니다.고유 한 SQL 업데이트 테이블

select distinct dm.[EE],dm.document_name,lu.* 
from Table1 as dm 
left join Table2 as lu on lu.[document_name]=dm.document_name 
where Doc_Count=2 

나는 SQL 피들에서 샘플 시나리오를 만들었습니다. (http://sqlfiddle.com/#!6/634ef/1)

CREATE TABLE TABLE1 
    ([EE] int, [Name] nvarchar(50),[Doc_Count] int, [document_name] nvarchar(50), [orginal_name] nvarchar(50)); 

INSERT INTO TABLE1 
    ([EE], [Name],[Doc_Count], [document_name]) 
VALUES 
    (001, 'Employee 1','2','Admin123.pdf'), 
    (001, 'Employee 1','2', 'Admin123.pdf'), 
    (002, 'Employee 2','2', 'password.pdf'), 
    (002, 'Employee 2','2', 'password.pdf') 


CREATE TABLE TABLE2 
    ([document_name] nvarchar(50), [original_name] nvarchar(50)); 

INSERT INTO TABLE2 
    ([document_name], [original_name]) 
VALUES 
    ('Admin123.pdf','test444.pdf'), 
    ('Admin123.pdf','test0124.pdf'), 
    ('password.pdf','hello1.pdf'), 
    ('password.pdf','hello2.pdf') 

결과 테이블 :

EE document_name document_name original_name 
1 Admin123.pdf Admin123.pdf test0124.pdf 
1 Admin123.pdf Admin123.pdf test444.pdf 
2 password.pdf password.pdf hello1.pdf 
2 password.pdf password.pdf hello2.pdf 
+1

당신의 업데이트입니다 무엇을 찾고 있습니까? – Xedni

+0

출력이 "잘못"이라는 것은 무엇을 의미합니까? 뭐라구? 너는 무엇을 기대 했는가? 너는 무엇을 얻었 느냐? –

+1

이 작업을 수행하려면 2 가지를 처리해야합니다. 첫 번째 것은 UPDATE FROM 문입니다 (https://stackoverflow.com/questions/2334712/how-do-i-update-from-a-select-in-sql- 서버)이고 두 번째는 PARTITION OVER (https://stackoverflow.com/questions/3317433/delete-duplicate-records-in-sql-server)입니다. – llouk

답변

0

이 당신이

SELECT * FROM TABLE2 INNER JOIN 
(
    SELECT DISTINCT [document_name] FROM TABLE1 
)T ON TABLE2.Document_Name = T.Document_Name 
+0

내가 필요로하는 무엇입니까 업데이트 문을하지만 그 선택 진술 작동합니다. – yope

+0

몇 가지 세부 정보 제공 : 업데이트 할 테이블 및 열 세부 정보 –

+0

table1의 "orginal_name"열을 table2 "Original name"의 값으로 업데이트해야합니다. 맵핑은 table1.document_name = table2.document_name과 유사합니다. – yope