2014-05-09 4 views
0

나는 나무가 있습니다varchar에 요소 목록이 포함 된 모든 레코드를 삭제하려면 어떻게해야합니까?

Trees(IDNodo, Path, color, ....) 

IDMytable는 autonumeric (BIGINT)이며 경로는 VARCHAR 내 트리에서 노드의 전체 경로를 포함 (MAX)입니다.

나는 모든 노드와 하위 노드를 삭제하려면, 그래서 내가 할 수있는 :

delete from trees where Path like '%[IDNode]'% 

이 노드와 모든 하위 노드를 삭제합니다.

하지만이 특정 속성이 모든 노드를 삭제하려면, 내가이 쿼리 이러한 노드를 얻을 수 있습니다 : 이것은 나에게 붉은있는 모든 나무의 모든 노드를 제공

select * from Trees where Color = 'Red'; 

. 나는 많은 IDNodes를 얻는다. 그런 다음 각 빨간색 노드의 모든 하위 노드를 삭제하려고합니다.

delete from trees where Path like IN (select * from Trees where Color = 'Red'); 

경로 인 경우 긴, 예를 들어, 내가 "IN"을 사용할 수 있지만 필드가 VARCHAR 인 등가가 있는지 모르겠어요.

재귀 프로 시저를 사용하지 않으려합니다.

+0

확실하지 말과 동일합니다 아래처럼 삭제 쿼리를 만들고 싶어; 왜 당신은 color = 'Red'나무에서 삭제를 할 수 없습니까? – Jayvee

답변

1

당신은

delete from trees where Path 
IN (select Path from Trees where Color = 'Red'); 

그러나 위의 쿼리가 나는 문제를 이해

delete from Trees where Color = 'Red'; 
+0

하지만 색상이 빨간색 일 수 있다면 검은 색은 예를 들어 ywllow입니다. 세 가지 색상. –

+0

@ ÁlvaroGarcía, 그 경우에는'IN' 연산자를 사용하고'Color in ('red', 'black', 'yellow')' – Rahul

관련 문제