从MySQL数据库中有条件地删除

时间:2019-01-08 11:59:42

标签: 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
}

感谢任何提示和帮助。

@edit

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

1 个答案:

答案 0 :(得分:1)

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

逻辑应该非常简单:

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