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

PLSQL查询图书关联作者出版商信息时返回多余数据问题

问题产生原因

  • 使用了LEFT JOIN左连接查询:左连接会保留左表(book表)的全部记录,哪怕对应没有匹配的作者、出版商数据也会作为结果返回,自然会带出大量无关联的额外记录。
  • 未加筛选条件:当前查询没有任何过滤规则,如果你预期只返回示例中Prentice Hall出版社的对应图书,没有增加出版社过滤条件的情况下,会把所有出版社的图书都查询返回。
  • 隐式字段冲突风险:原代码用select *查询所有字段,如果不同表存在同名字段,可能导致关联逻辑异常,出现重复记录。

修复方案

将左连接改为只保留同时匹配作者、出版商的内连接INNER JOIN,明确查询需要的字段,按需增加过滤条件即可,修改后完整代码如下:

set serveroutput on;
declare
cursor c is
select b.bookid, b.title, p.publishername, a.firstname, a.lastname 
from book b 
inner join author a on a.authorid = b.author_id 
inner join publisher p on b.publisherid = p.publisherid
-- 如果不需要限定出版社,删掉下面这行WHERE条件即可
where p.publishername = 'Prentice Hall'
order by b.title asc;

begin 
 dbms_output.put_line('BOOKID'||'.............'||'TITLE'||'.............'||'publisher'||'.............'||'Author');
for i in c loop
dbms_output.put_line(i.bookid||'.............'||substr(i.title,1,10)||'.............'||i.publishername||'.............'||i.firstname||' '||i.lastname);
end loop;
end;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:54:04