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 ubuntu服务器配置dns域名后无法访问其他域名
  • ¥50 本人复制了一个关于股票指标的代码,但是运行失败,有没有人帮我解决一下
  • ¥50 用matlab和numeca做透平机械流体力学和热力学模拟 价格可议
  • ¥15 Unity3D WebView
  • ¥20 论文AlphaTensor复现(有偿)
  • ¥15 (有偿)在ANSYS中 .anf文件
  • ¥45 关于#芯片#的问题:组合逻辑电路设计
  • ¥15 基与机器学习和时间序列分析预测养老服务需求趋势
  • ¥100 求连续两帧图像在水平和垂直上偏移
  • ¥15 Verilog hdl密码锁设计