如果在任何一个表中可用,是否可以从多个表中删除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 & "'"
感谢提前......
答案 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那么正确的方法是在DRAWING
,DESIGN
和ESTIMATE
表中使用外键来引用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);