2012-04-17 5 views
3

하나의 쿼리 만 사용하여 상위 테이블과 하위 테이블의 레코드를 삭제하려고합니다. 필드 이름이 TABLENAME 인 부모 테이블 PARENT_TABLE에 자식 테이블 이름 CHILD1_TABLE이 있습니다. 상위 테이블에 더 많은 하위 테이블이 포함되어 있습니다. 상위 테이블뿐만 아니라 하위 테이블 중 하나에서 하나의 레코드 만 삭제하려고합니다. 공통 필드는 자식 테이블과 부모 테이블 모두에서 ID입니다. 나는이 같은쿼리 결과를 테이블 이름으로 사용

DELETE PARENT.*,CHILD.* 
FROM PARENT_TABLE PARENT 
INNER JOIN (SELECT TABLENAME FROM PARENT_TABLE WHERE ID='CHILD1-001') CHILD 
ON PARENT.ID=CHILD.ID 
WHERE PARENT.ID='CHILD1-001' 

을 내 쿼리를 작성하지만하지 작동합니다. 아무도 나를 도울 수 있습니까?

+0

아마도 여기에 도움이되는 아이디어 중 일부는 - [동적 SQL을 MySQL에 저장하는 방법] (http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored) - 절차) – Randall

답변

0

ON DELETE CASCADE을 사용하지 않으시겠습니까? 이것에 대해

+0

Euclides를 이용해 주셔서 감사합니다. MyISAM 스토리지 엔진을 사용하고 있습니다. –

2

무엇 :

DELETE PARENT.*,CHILD.* 
FROM PARENT_TABLE PARENT 
INNER JOIN (SELECT * FROM (SELECT TABLENAME FROM PARENT_TABLE WHERE ID='CHILD1-001') AS CHILD) 
ON PARENT.ID=CHILD.ID 
WHERE PARENT.ID='CHILD1-001' 
+0

감사합니다 Shayan Husaini하지만 작동하지 않습니다. –

+0

어떤 오류가 발생하고 있습니까? –

+0

MULTI DELETE에서 알 수없는 테이블 'CHILD'오류가 발생합니다. –

0
DELETE PARENT.*,CHILD.* 
FROM PARENT_TABLE PARENT 
INNER JOIN (SELECT * FROM (SELECT TABLENAME FROM PARENT_TABLE WHERE ID='CHILD1-001') AS a) as child 
ON PARENT.ID=CHILD.ID 
WHERE PARENT.ID='CHILD1-001' 

나는이 쿼리 모르겠지만 그것을 시도를 제공합니다.

+0

답장을 보내 주셔서 감사합니다. Jason_vorhees. MULTI DELETE에서 알 수없는 테이블 'CHILD'오류를 제공합니다. –

관련 문제