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

Oracle Database 21c Express与Developer查询结果重复显示异常求助

解决Oracle 21c Express查询重复及Enrollment表显示行数异常问题

步骤1:确认Enrollment表实际行数

先排除查询逻辑导致的显示错误,执行以下语句查看表内真实数据量:

SELECT COUNT(*) FROM enrollment;

情况A:实际行数为8(表内确实存在8条数据)

  • 检查插入脚本:确认是否重复编写了INSERT INTO enrollment语句,或脚本被多次执行且未提前清空表。
  • 重置表数据:执行TRUNCATE TABLE enrollment;清空表,再重新插入2条测试数据,执行后再次查询行数。
  • 检查自动提交设置:Oracle Developer默认可能开启自动提交,若每次运行脚本未回滚,会导致重复插入。可在执行插入前添加ROLLBACK;确保之前的操作被回滚。

情况B:实际行数为2(查询结果显示8行是逻辑错误)

这大概率是笛卡尔积导致的,通常是关联多张表时未添加正确的连接条件。比如错误的跨表查询:

-- 错误示例:无连接条件导致笛卡尔积(2学生*2课程*2选课=8行)
SELECT * FROM student, course, enrollment;

修正为带外键关联的查询:

-- 正确示例:通过外键关联三张表
SELECT s.*, c.*, e.*
FROM student s
INNER JOIN enrollment e ON s.student_id = e.student_id
INNER JOIN course c ON c.course_id = e.course_id;

额外排查点

  • 检查查询语句是否包含重复的UNION ALL或重复子查询逻辑,导致结果重复。
  • 确认表中是否未设置主键/唯一约束,导致插入重复数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:12:06