mysql - 从 mySQL 数据库有条件删除

标签 mysql sql database

我有一个包含一些号码的客户列表。不同的客户可以在彼此之间共享这些号码(一个客户可以将他的一些号码“借”给另一个客户),但如果“借用者”被删除,他必须归还这些号码。

我的表结构如下所示:

id | client | range_num_up | range_num_down | ... | former

我在这里想要实现的是: - 如果分配给客户的号码没有前者:从数据库中删除它们 - 否则数字必须再次分配给前者

我知道 mySQL 中存在 SELECT IF 语句,但我不太确定如何将其与一个查询结合在一起。

我已经尝试过类似的方法:

SELECT IF(former is NULL, '', former) former FROM numbers_pool WHERE id = 3

这会向我返回号码前所有者的姓名。现在我想使用该信息来处理查询。我想象的是以下场景:

if reply == '' {
    DELETE THAT ENTRY
}
else {
    UPDATE THE NAME OF THE CLIENT WITH RECEIVED FORMER
}

感谢任何提示和帮助。

@编辑

准确地说:我知道我可以删除,但这仍然不包括我想更新该记录的第二种情况。所以我正在寻找单一查询解决方案。

最佳答案

您不能在一条语句中同时执行DELETEUPDATE - 它们是不同类型的查询。您可以编写一个简短的例程(例如过程或函数,或者只是您加载和执行的脚本文件中的例程),它将在单个操作中执行所有必要的语句。

逻辑应该相当简单:

首先使用 SELECT 检查 former 的值并将该值读入变量。如果您获得一个值,则执行必要的UPDATE。如果您得到NULL,请执行DELETE。您不需要依赖 DELETE 的结果来决定如何处理 UPDATE(反之亦然)。

关于mysql - 从 mySQL 数据库有条件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091389/

相关文章:

mysql - 调用存储过程时 Integer IN 参数为空

php - 合并 MySQLi 行并添加计数器?

php - Laravel 播种 : date manipulation not working

mysql - 外键在 MySQL 中偶尔起作用

php - 如何防止IDE(PhpStorm)在编辑代码时写入数据库?还有一个幽灵变量

sql - 比较来自 2 个不同表的 2 列并更新列

sql - 使用 SQL 删除没有 shell 访问权限的旧 MediaWiki 修订版?

java - 从另一个 Spring Boot JPA 项目插入的数据库中读取数据

mysql - 复合主键和 Auto_Increment

用于运行.txt文件的Mysql命令