我想只使用一个查询删除父表和子表中的记录。
我在CHILD1_TABLE
字段名称的父表PARENT_TABLE
中有子表名TABLENAME
。父表包含更多子表。我想从子表和父表中只删除一个记录。
子表和父表中的公共字段为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 :(得分: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'
答案 1 :(得分:0)
为什么不使用ON DELETE CASCADE
?
答案 2 :(得分: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'
我不确定这个查询但是试一试。