我有一个包含一些号码的客户清单。不同的客户可以彼此共享这些号码(一个客户可以“借用”他的一些号码给另一个),但是如果“借用人”被删除,他必须返回这些号码。
我的表结构如下:
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
准确地说:我知道我可以删除,但是仍然不能解决我想更新该记录的第二种情况。因此,我正在寻找一种查询解决方案。
答案 0 :(得分:1)
您不能在单个语句中同时执行DELETE
和UPDATE
-它们是不同的查询类型。您可以编写一个简短的例程(例如过程或函数,或者只是加载并执行的脚本文件中的例程),该例程将在一次操作中执行所有必要的语句。
逻辑应该非常简单:
首先使用former
检查SELECT
的值,然后将值读入变量。如果得到一个值,请执行必要的UPDATE
。如果得到NULL
,请改为执行DELETE
。您无需依靠DELETE的结果来决定如何处理UPDATE(反之亦然)。