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

如何使用多表LEFT JOIN查询结果批量删除3张表的对应CodeName数据

实现方案

方案1:已知待删除CodeName为ABC、DEF,直接执行删除语句

适合你已经确认待删除目标值的场景,直接执行三条删除语句即可:

DELETE FROM Tbl_StockData_Daily WHERE CodeName IN ('ABC', 'DEF');
DELETE FROM Tbl_StockData_Weekly WHERE CodeName IN ('ABC', 'DEF');
DELETE FROM Tbl_StockData_Monthly WHERE CodeName IN ('ABC', 'DEF');

方案2:直接嵌套原有查询批量删除,无需手动指定值

如果不想手动复制查询结果,或者后续需要定期执行该清理操作,可以直接把你之前的查询不匹配CodeName的语句作为子查询嵌入,自动匹配待删除值:

-- 删除日线表对应数据
DELETE FROM Tbl_StockData_Daily 
WHERE CodeName IN (
    SELECT Qry_StockData_Names.CodeName
    FROM Qry_StockData_Names 
    LEFT JOIN Tbl_StockData_Codes ON Qry_StockData_Names.CodeName = Tbl_StockData_Codes.CodeName
    WHERE Tbl_StockData_Codes.CodeName IS NULL
);

-- 删除周线表对应数据
DELETE FROM Tbl_StockData_Weekly 
WHERE CodeName IN (
    SELECT Qry_StockData_Names.CodeName
    FROM Qry_StockData_Names 
    LEFT JOIN Tbl_StockData_Codes ON Qry_StockData_Names.CodeName = Tbl_StockData_Codes.CodeName
    WHERE Tbl_StockData_Codes.CodeName IS NULL
);

-- 删除月线表对应数据
DELETE FROM Tbl_StockData_Monthly 
WHERE CodeName IN (
    SELECT Qry_StockData_Names.CodeName
    FROM Qry_StockData_Names 
    LEFT JOIN Tbl_StockData_Codes ON Qry_StockData_Names.CodeName = Tbl_StockData_Codes.CodeName
    WHERE Tbl_StockData_Codes.CodeName IS NULL
);

注意事项

如果你的数据库支持事务操作,建议先开启事务执行,确认删除行数符合预期后再提交,避免误删数据:

BEGIN TRANSACTION;

-- 执行上面的DELETE语句后,先验证删除结果是否正确
-- 例:验证日线表中已无对应CodeName数据
SELECT COUNT(*) FROM Tbl_StockData_Daily WHERE CodeName IN ('ABC','DEF');

-- 确认没问题再提交
COMMIT;
-- 结果不符合预期就执行回滚
-- ROLLBACK;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:30:04