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

Oracle使用HAVING子句筛选的表条目删除时报ORA-00933如何解决

ORA-00933 报错解决方案

你使用的是MySQL风格的DELETE JOIN语法,Oracle数据库不支持该写法,因此触发ORA-00933: SQL command not properly ended错误,可使用以下两种可行方案实现需求:

方案1:IN 子查询实现(适合小数据量场景,写法简单易读)

DELETE FROM MyTable
WHERE USER_ID IN (
    SELECT USER_ID
    FROM MyTable
    GROUP BY USER_ID
    HAVING MAX(login_time) < SYSDATE - 90
);

方案2:EXISTS 子查询实现(适合大数据量场景,执行性能更优)

DELETE FROM MyTable a
WHERE EXISTS (
    SELECT 1
    FROM MyTable b
    WHERE b.USER_ID = a.USER_ID
    GROUP BY b.USER_ID
    HAVING MAX(b.login_time) < SYSDATE - 90
);

注意事项

  • 执行删除操作前,请先执行对应SELECT查询确认匹配的条目符合预期,避免误删数据
  • 生产环境操作前建议提前备份相关表数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:15:06