按特定 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的主要内容,如果未能解决你的问题,请参考以下文章