douzongmu2543 2014-10-07 07:06
浏览 76
已采纳

从多个数据库中的多个表中删除单个行

Here's the problem. I have a MySQL database that looks a little like this:

Table: db1.group_a
-----------
| name    |
-----------
| Alice   |
| Charlie |
-----------

Table: db2.group_b
----------
| name   |
----------
| Debbie |
| Bob    |
----------

(Yes, each table is in different databases. Also, the actual tables have similar but different structures, I just use one column for simplicity.)

Each name occurs only once in both databases.

Now what I need to do, is find a row (for example, Bob) and delete it from whichever table it's in. I'm thinking of deleting from group_a and then checking for affected row(s) and then doing some sort of if (affected_row < 1) { try_in_next_table(); } in php.

But it would be ideal to do this entirely in MySQL. Is there anyway to accomplish this?

  • 写回答

1条回答 默认 最新

  • dousonghs58612 2014-10-07 07:36
    关注

    Here are a few scenarios:

    Bulk delete from all databases/tables:

    DELETE FROM db1.group_a where name='Bob';
    DELETE FROM db2.group_b where name='Bob';
    

    OR Find actual db/table and then delete (php script):

    $db = new mysqli("localhost", "my_user", "my_password", "world");
    $tables = array('db1.group_a','db2.group_b');
    foreach ($tables as $t)
      if ($query = $db->query("SELECT * from ".$t." WHERE name=".$db->escape_string("Bob")))
        if ($query->num_rows>0) {
          $db->query("DELETE FROM ".$t." WHERE name=".$db->escape_string("Bob"));
          break; // break foreach
        }
    

    OR Delete without selecting:

    $db = new mysqli("localhost", "my_user", "my_password", "world");
    $tables = array('db1.group_a','db2.group_b');
    foreach ($tables as $t)
      if ($query = $db->query("DELETE FROM ".$t." WHERE name=".$db->escape_string("Bob"))
        if ($query->affected_rows>0)
          break; // break foreach
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀