2014-07-22 6 views
0

저장 프로 시저에 다음과 같은 정의가 있습니다.저장 프로 시저에서 일치하는 여러 행을 삭제하는 방법은 무엇입니까?

DECLARE @DeletedRoleTag table(Role_key bigint, Tag_key bigint) 

E.G. @DeletedRoleTag

내 SQL 테이블 (RoleTag) 나는 @DeletedRoleTag으로 행을 일치 한 행을 삭제할에서 이제
Role_key Tag_key 
    1   2 
    3   4 

.

Role_key = 1이고 Tag_key = 2 또는 Role_key = 3이고 Tag_key = 4 인 RoleTag 테이블에 행이있는 경우 삭제해야합니다. 어떻게해야합니까?

+0

당신은 당신이 사용하는 데이터베이스 질문에 태그를해야한다. 테이블 변수를 사용하여 SQL Server처럼 보입니다. –

+0

예, 그렇습니다. 감사. –

답변

2

내가 exists 절을 사용하여이 작업을 수행 할 것입니다 :

delete from RoleTag rt 
    where exists (select 1 
       from @DeletedRoleTag drt 
       where drt.Role_key = rt.Role_key and 
         drt.Tag_key = rt.Tag_key 
       ); 
+0

잘못된 구문을 보여줍니다. –

+1

"double from"구문을 사용하지 않는 한 DeletedRoleTag에 "@"가 누락되었습니다. 또한 테이블에서 삭제할 수 없습니다. – Kritner

+0

감사합니다! 네, 그 두 가지 변화가 필요했습니다. :) –

0

시도 :

delete 
from roleTag 
from roleTag rt 
inner join @DeletedRoleTag drt ON rt.role_key = drt.role_key 
    and rt.tag_key = drt.tag_key 
+0

@Serpiton SQL Server 이것은 완전히 유효한 구문입니다. 너 해봤 어? 테이블에서 삭제를 별칭으로 지정하려면 "delete from roleTag rt"로 "delete from roleTag from roleTag rt"가되어야합니다. – Kritner

관련 문제