2017-02-09 8 views
0

私はこのようなWHERE IN句でテーブルからレコードを取得したい:SQL Server:関数はwhere句で使用できる列の値を返しますか?

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

今、私はそれが複数の場所を使用し、そのようなクエリを呼び出すことになるでしょうので、SQL Serverの機能にXクエリを移動したい:

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

これは可能ですか?その場合は、関数の型(スカラーまたはテーブル関数)になりますか?

+0

を渡す必要があり、このようにはい、それは可能だが、私はそれがより良いの参加で行わだと思うと思います。サブセレクトは、SQLサーバーの実際のパフォーマンスを低下させる可能性があります。 –

答えて

2

私はuが

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