按特定 ID 删除一行,该行不存在另一个表的列 ID

Posted

技术标签:

【中文标题】按特定 ID 删除一行,该行不存在另一个表的列 ID【英文标题】:delete one row by Specific ID which the same is not present another table Column ID 【发布时间】:2016-07-04 13:58:55 【问题描述】:
mysql> select *from add_member;
+-----------+-------------+--------------+-------------------+
| member_ID | member_name | member_phone | member_department |
+-----------+-------------+--------------+-------------------+
|     12345 | kishore     | 89482934     | IT738             |
|     12347 | ram         | 783892389    | IT721829          |
|    12346 | vardhan     | 902112       | TI5738            |

mysql> select *from ownbook;


    +--------+----------+-----------+-------------+------------+-----------

    | BookID | Bookname | member_ID | member_name | from       | to         |
    +--------+----------+-----------+-------------+------------+------------+
    |   1006 | physics  |     12346 | ram         | 2016-07-05 | 2016-07-20 |
    +--------+----------+-----------+-------------+------------+------------+
1 row in set (0.00 sec)

【问题讨论】:

我希望能够删除 ID-12345,12347 的数据,但是当我尝试删除 12346 时,它不应该被删除,因为它在另一个表中 我认为你有外键扭结两个表。从具有该 ID 的 ownbook 记录中删除之前 【参考方案1】:

你可以这样试试:

delete from add_member where member_ID  not exists(select member_ID from ownbook)

或者你可以使用 NOT IN like

delete from add_member where member_ID  not in(select member_ID from ownbook)

如果是特定数据,那么只需执行以下操作:

delete from add_member 
where member_ID  not in(select member_ID from ownbook where member_id in(12345,12347))

【讨论】:

但我想删除 2345 或 2347 但不是 2346 的特定数据,因为它在另一个表中 删除两条数据...我要删除一条数据 我只想删除 12345 ID【参考方案2】:

如果你想删除一个特定的 id 当且仅当它不应该出现在第二个表中时,你可以这样做:

delete from add_member where member_ID='SEPCIFIC_ID_YOU_WANT' and member_ID not in(select member_ID from ownbook)

工作 100% 测试。

【讨论】:

以上是关于按特定 ID 删除一行,该行不存在另一个表的列 ID的主要内容,如果未能解决你的问题,请参考以下文章

使用该行的 id 编辑表的特定行

如果另一个表中存在值,如何更新我的列?

SQL删除不在另一个表中的行

插入表需要来自另一个表的特定条件

如何选择(所有)表 1 中的一行,该行具有与表 2 相同的另一行

成功调用ajax后数据表不更新