首页 > 解决方案 > SQL查询返回相同字段的多行

问题描述

这是我下面的代码,我试图返回 SELECT 中类别编号为 4 的所有列。但是当我这样做时,我得到了正确的答案,但它会重复 100 多次!有谁知道为什么会发生这种情况?

SELECT sr.CondoID, cu.LocationNum, sr.EstHours, sr.SpentHours, o.OwnerNum, o.LastName
FROM service_request sr, owner o, condo_unit cu
WHERE CategoryNum = '4';

服务请求表

Condo_Unit 表

所有者表

标签: sql

解决方案


正如评论中所说,您看到的结果是cross joinfrom 子句中所有表行之间的结果。所以你需要加入它们以获取表中的相关行,

正如我在您的图像中看到的那样,并且由于缺少预期的结果,我将只使用简单的join(可以更改为left join如果需求从您这边提出要求)并将查询编写为,

select sr.CondoID, cu.LocationNum, sr.EstHours, sr.SpentHours, o.OwnerNum, o.LastName
  from service_request sr
  join condo_unit cu
    on cu.condoid = sr.condoid
  join owner o
    on o.ownernum = cu.ownernun
 where sr.categoryNum = 4;

PS 从图像中看,categoryNum它不是角色,所以我把''它周围的东西去掉了。如果它是一个varchar列,你可以把它放回去。


推荐阅读