簡體   English   中英

具有表值函數的INNER JOIN不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM