如果在任何一个表中可用,是否可以从multitable中删除id?

时间:2014-04-25 07:57:59

标签: mysql vb.net

如果在任何一个表中可用,是否可以从多个表中删除id? 喜欢 -

"DELETE from EXCEL_ENTRY WHERE ID = '" & id & "' " _    
        & "union DELETE from DRAWING WHERE ID = '" & id & "' " _    
        & "union DELETE from DESIGN WHERE ID = '" & id & "' " _    
        & "union DELETE from ESTIMATE WHERE ID = '" & id & "'"  

感谢提前......

2 个答案:

答案 0 :(得分:1)

您可以根据与您的表相关的相同ID

使用联接查询
DELETE 
  ee.*,
  dr.*,
  de.*,
  e.* 
FROM
  EXCEL_ENTRY ee
  INNER JOIN DRAWING dr 
    ON (ee.id = dr.id) 
  INNER JOIN DESIGN de 
    ON (ee.id = de.id) 
  INNER JOIN ESTIMATE e 
    ON (ee.id = e.id) 
WHERE ee.ID = 'your_id' 

但更好的方法是使用级联删除选项来定义外键关系,注意你应该尝试上面的删除查询对你的样本数据首先不要直接在你的生产数据库上使用

答案 1 :(得分:0)

您使用的是哪种表类型?如果InnoDB那么正确的方法是在DRAWINGDESIGNESTIMATE表中使用外键来引用EXCEL_ENTRY。如果您从ON DELETE CASCADE删除条目,则使用EXCEL_ENTRY会自动从这些表中删除匹配的行。

例如,使用以下命令将外键引用添加到DRAWING

ALTER TABLE DRAWING 
 ADD FOREIGN KEY (id) REFERENCES EXCEL_ENTRY (id) ON DELETE CASCADE;

更新

如果您的EXCEL_ENTRY表格没有ID已编入索引,那么您需要先添加该表:

ALTER TABLE EXCEL_ENTRY ADD INDEX (id);