我有一个包含一些号码的客户列表。不同的客户可以在彼此之间共享这些号码(一个客户可以将他的一些号码“借”给另一个客户),但如果“借用者”被删除,他必须归还这些号码。
我的表结构如下所示:
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
}
感谢任何提示和帮助。
@编辑
准确地说:我知道我可以删除,但这仍然不包括我想更新该记录的第二种情况。所以我正在寻找单一查询解决方案。
最佳答案
您不能在一条语句中同时执行DELETE
和UPDATE
- 它们是不同类型的查询。您可以编写一个简短的例程(例如过程或函数,或者只是您加载和执行的脚本文件中的例程),它将在单个操作中执行所有必要的语句。
逻辑应该相当简单:
首先使用 SELECT
检查 former
的值并将该值读入变量。如果您获得一个值,则执行必要的UPDATE
。如果您得到NULL
,请执行DELETE
。您不需要依赖 DELETE 的结果来决定如何处理 UPDATE(反之亦然)。
关于mysql - 从 mySQL 数据库有条件删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091389/