【问题标题】:SQL Server : function return column values that can be used in where clause?SQL Server:函数返回可以在where子句中使用的列值?
【发布时间】:2017-06-27 04:09:27
【问题描述】:

我想使用WHERE IN 子句从表中获取记录,如下所示:

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)

可以这样做吗?如果是,那将是函数的类型(标量函数或表函数)?

【问题讨论】:

  • 是的,这是可能的,但我认为最好通过加入来完成。子选择可能是 SQL 服务器的真正性能杀手。

标签: sql-server sql-function


【解决方案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...))

【讨论】:

  • 欢迎来到堆栈溢出 :-) 请看How to Answer。您应该提供一些信息为什么您的代码可以解决问题。仅代码答案对社区没有用处。
【解决方案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) )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多