首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个mysql表中删除数据

从多个mysql表中删除数据
EN

Stack Overflow用户
提问于 2012-03-11 11:58:55
回答 3查看 5K关注 0票数 1

tableOk,所以我想做的是

我在mysql中的一个数据库上有多个表

database1

代码语言:javascript
复制
table1

table2

table3

table4

table5

每个表都有一个列id

对于每个匹配的id,我想删除该行。因此在每个表中删除954001行。什么是最好的方式来做到这一点,而不杀死我的数据库。顺便说一句,所有的ids都是完全匹配的。

代码语言:javascript
复制
<?php
// get value of id that sent from address bar
$customer_id=$_GET['id'];
$id=$_GET['id'];
// Delete data in mysql from row that has this id
$sql="DELETE FROM teable_users WHERE customer_id = $customer_id;
DELETE FROM table_parties WHERE id = $id;
DELETE FROM table_weddings WHERE id = $id;
DELETE FROM table WHERE id = $id;
DELETE FROM table_request_client WHERE id = $id;
DELETE FROM table_requests WHERE id = $id;
DELETE FROM table_users WHERE id = $id;";

$result=mysql_query($sql);

// if successfully deleted
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='text.php'>Back to Event    Manager</a>";
}

else {
echo "ERROR";
}

// close connection
mysql_close();

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-11 12:04:50

每个表都需要一条DELETE语句。如果你担心一致性,你可以使用事务。

代码语言:javascript
复制
BEGIN TRANSACTION;
DELETE FROM table1 WHERE id = 1;
DELETE FROM table2 WHERE id = 1;
DELETE FROM table3 WHERE id = 1;
DELETE FROM table4 WHERE id = 1;
DELETE FROM table5 WHERE id = 1;
COMMIT;

使用PDO的PHP示例(未测试)

代码语言:javascript
复制
$id = (int) $_GET['id'];
$pdo->beginTransaction();
$st = $pdo->prepare('DELETE FROM table1 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table2 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table3 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table4 WHERE id = :id');
$st->execute(array(':id', $id));
$st = $pdo->prepare('DELETE FROM table5 WHERE id = :id');
$st->execute(array(':id', $id));
$pdo->commit();
票数 5
EN

Stack Overflow用户

发布于 2012-03-11 12:05:49

您可以编写触发器,在初始删除时执行删除操作

票数 0
EN

Stack Overflow用户

发布于 2012-03-11 12:08:11

我认为从本质上讲,您必须为每个表分别执行语句。

您可能会对此论坛感兴趣:

http://forums.devshed.com/database-management-46/one-query-to-delete-from-multiple-tables-71959.html

我相信是这样的--尽管我的SQL很生疏。

delete from table1 where id='954001';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9652310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档