使用查询结果作为表名

时间:2012-04-17 06:40:13

标签: mysql

我想只使用一个查询删除父表和子表中的记录。 我在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'

但它不起作用。有人能帮助我吗?

3 个答案:

答案 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'

我不确定这个查询但是试一试。