直到今天我对内连接的想法是它将返回满足连接条件的表中存在的最小行数。
例如如果表格A 包含4行而表格B 包含7行。我希望如果它们满足连接条件,那么4行可以是最大输出。
我刚刚编写了一个sp,其中我正在创建两个临时表并填充它们。然后我采取了他们的内部连接,但返回更多行(在我的情况下29行返回我期待4) 经过一番搜索,我找到了这个 link
确认我可以发生,但我仍然想知道我的选项是什么来限制返回的结果。
以下是我的存储过程。
ALTER PROCEDURE [dbo].[GetDDFDetailOnSiteCol]
@siteId int,
@colNum int
AS
BEGIN
SET NOCOUNT ON;
create Table #portDetail
(
ddfId int,
portDetail nvarchar(50),
siteId int
)
Insert into #portDetail SELECT ddf.id, ddf.portDetail, site.Site_ID from site
inner join ddf ON site.Site_ID = ddf.siteCodeID
where ddf.siteCodeID = @siteId and ddf.colNo= @colNum
order by colNo,blockNum,portRowNum,portColNum
create Table #portAllocationDetail
(
assigned_slot nvarchar(50),
siteId int
)
Insert into #portAllocationDetail
SELECT dbo.portList.assigned_slot, dbo.site.Site_ID
FROM dbo.portList INNER JOIN
dbo.site ON dbo.portList.siteCodeID = dbo.site.Site_ID
where dbo.site.Site_ID = @siteId
--select * from #portAllocationDetail
Select #portDetail.ddfId,#portDetail.portDetail,#portAllocationDetail.siteId,#portAllocationDetail.assigned_slot FROM #portDetail
INNER JOIN #portAllocationDetail
ON
#portDetail.siteId = #portAllocationDetail.siteId
END
答案 0 :(得分:12)
对于TableA中的每一行,inner join
重复表中的每个匹配行。因此,如果TableA中有4行,TableA中有7行,则最大行数为28。
答案 1 :(得分:-1)
----------内连接意味着 - 当两个表中至少有一个匹配时,INNER JOIN关键字返回行.---------------- -
答案 2 :(得分:-1)
内部联接也会导致重复。
如果要从两个表中获得唯一的公用值,请使用相交运算符。
因此,如果相交的两侧都为空,则该相交甚至可以显示空值。