[英]INNER JOIN with Table-Valued Function not working
我有一個表值函數返回一個表。 當我嘗試用另一個表JOIN
表值函數時,我沒有得到任何結果,但是當我將函數的結果復制到一個實際的表中並進行相同的連接時,我得到了預期的結果。
查詢看起來像這樣:
Select *
From myTable
INNER JOIN fn_function(@parm1, @param2)
ON ....
總而言之,我有大約4個這樣的查詢,每個查詢都有不同的功能,但所有功能都產生相同的表,但數據不同。 對於其中一些查詢, INNER JOIN
可以正常工作,但對於其他查詢則不然。
有人建議為什么會這樣嗎?
使用表值函數,您通常使用Cross Apply
。
Select *
From myTable m
CROSS APPLY fn_function(m.field1, m.field2)
如果我們做出一些假設,表值函數的參數不依賴於myTable列,那么這將是有效的。
SELECT *
FROM myTable
INNER JOIN
(SELECT * from fn_function(@para1, @para2 etc))
ON ...
但是如果params依賴於myTable它就行不通
連接的“ON”子句很可能是不正確的。 也許是一個小錯字
JOIN x ON oID = odID
代替
JOIN x ON oID = oID
我認為這應該有效
Select *
From Animals
Join dbo.AnimalsTypesIds(900343)
As AnimalsTypes
On AnimalsTypes.TypeId = Animals.TypeId
在表值函數中,返回表應該具有TypeId,以便join對該子句起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.