请你帮我,如何在一个查询中从多个表中删除数据? 我有这个表结构:
products
texts
files
products_files - 这里是映射到产品的文件 - product_id, file_id texts_files - 这里是映射到文本的文件 - text_id, file_id
我需要这样做: 如果我删除 ID 为 50 的文件,我需要删除 products_files 和 texts_files 中 file_id = 50 的所有行。
你知道怎么做吗?
我尝试使用左连接,但没有任何结果......
$query = 'DELETE products_files, texts_files FROM products_files
LEFT JOIN texts_files ON texts_files.file_id = products_files.file_id
WHERE products_files.file_id = '.$id.' OR texts_files.file_id = '.$id.'';
最佳答案
您可能需要ON DELETE CASCADE
功能。但是,请小心使用它,因为它可能会产生意想不到的后果:
http://www.mysqltutorial.org/mysql-on-delete-cascade/
如果您在 create table
查询中添加 ON DELETE CASCADE
,您可以从中删除任何项目。如果有任何外键约束,mysql 会自动跟随连接并删除其他表中的条目。
如果您想安全起见(推荐),您将需要使用多个删除语句。
关于php - 在一个查询中从多个表中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593286/