2017-02-09 32 views
0

我想WHERE IN條款這樣來從表中的記錄:SQL Server:函數返回where子句中可以使用的列值嗎?

Select * 
From Table_A 
Where table_id IN (Query X that returns multiple or single id) 

現在我想X查詢移動到SQL Server的功能,因爲它會使用多個地方,並要撥打查詢這樣的:

Select * 
From Table_A 
Where table_id IN dbo.function(parameters) 

可以做到這一點嗎?如果是,那麼哪個將是函數的類型(標量或表函數)?

+0

是的,它是可能的,但我認爲這是更好地與聯接完成。子選擇可以是SQL服務器的真正性能殺手。 –

回答

2

我想用這種方式ü需要通過

CREATE FUNCTION function_name(@inputparams ...) 
RETURNS TABLE 
AS 
RETURN SELECT id FROM table WHERE @inputparams... 
go 
    select * 
    FROM table 
    WHERE table_id IN (SELECT column_name FROM function_name(inputparametes)) 
1

試試這個:

CREATE FUNCTION fncName (@params ...) 
RETURNS TABLE 
AS 
RETURN SELECT id FROM tableName WHERE @params... 
go 
SELECT * FROM query WHERE id IN (SELECT id FROM fncName(@params...)) 
+0

歡迎使用堆棧溢出:-) 請看[答]。您應該提供一些信息,說明爲什麼您的代碼可以解決問題。 僅有代碼的答案對社區沒有用處。 – JimHawkins

相關問題