You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建删除PowerDNS数据库指定记录的SQL查询

PowerDNS 多表删除SQL语句

需求说明

删除domains和domains_status表中ID匹配的记录,仅当domains_status表的domain_regStatus字段值为0时执行操作。

适用不同数据库的SQL写法

MySQL/MariaDB

使用多表关联删除语句,可一次性删除两张表的匹配记录:

DELETE d, ds
FROM domains d
INNER JOIN domains_status ds 
    ON d.id = ds.id
WHERE ds.domain_regStatus = 0;

PostgreSQL

PostgreSQL不支持单条语句同时删除多张表,可分两步执行:

-- 先删除domains表中匹配的记录
DELETE FROM domains
WHERE id IN (SELECT id FROM domains_status WHERE domain_regStatus = 0);

-- 再删除domains_status表中符合条件的记录
DELETE FROM domains_status
WHERE domain_regStatus = 0;

或者使用CTE(公共表表达式)更清晰地管理待删除的ID集合:

WITH target_ids AS (
    SELECT id FROM domains_status WHERE domain_regStatus = 0
)
DELETE FROM domains WHERE id IN (SELECT id FROM target_ids);

DELETE FROM domains_status WHERE domain_regStatus = 0;

重要注意事项

  • 先验证再删除:执行删除前,务必先运行查询确认要删除的记录范围,避免误删:
SELECT d.id, d.name, ds.domain_regStatus
FROM domains d
JOIN domains_status ds ON d.id = ds.id
WHERE ds.domain_regStatus = 0;
  • 备份数据:操作前请做好数据库全量备份,防止数据丢失。
  • 关联字段确认:确保两张表的id字段是正确的关联字段(如主键/外键),保证删除逻辑的准确性。

内容的提问来源于stack exchange,提问作者Brandon T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:15:53