php - 在一个查询中从多个表中删除数据

标签 php mysql join sql-delete

请你帮我,如何在一个查询中从多个表中删除数据? 我有这个表结构:

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/

相关文章:

php - 如何更改 ffmpeg 中视听器的大小?

php - Laravel 5 - Eloquent - 分页结果

php - 通过 PHP 调用页面加载的随机记录,通过 AJAX 动态显示结果

mysql - 在mysql中连接两个表

php - mysql 查询在循环内不起作用

mysql - 如何在MySQL列中插入没有匹配的NULL值?

php - 如何重新查询查询?

mysql - 无法通过 Ruby 和 MySQL2 连接到数据库

mysql - 提高mysql查询性能

sql - 连接两个具有不同列数的表