如何将查询作为变量传递

时间:2014-06-12 23:08:17

标签: sql-server tsql ssms

DECLARE @SomeVariableTable TABLE (
    Field INT
)
INSERT INTO @SomeVariableTable
    SELECT    st.Field
    FROM      SomeTable st;

SELECT    *

FROM      AnotherTable at

WHERE     at.SomeField IN @SomeVariableTable

如何使上述代码有效?

我已经考虑将整个列连接到VARCHAR中,虽然这适用于VARCHAR但它不适用于INT。

2 个答案:

答案 0 :(得分:1)

除了上一个SELECT之外,您的代码几乎没有问题。更改上一个SELECT部分,如下所示。

SELECT    *
FROM      AnotherTable at    
WHERE     at.SomeField IN (select Field from @SomeVariableTable)

答案 1 :(得分:1)

这就是你要做的事情......

DECLARE @SomeVariableTable TABLE (
    Field INT
)
INSERT INTO @SomeVariableTable
    SELECT    st.Field
    FROM      SomeTable st;

SELECT    *
FROM      AnotherTable at
WHERE     at.SomeField IN (
                           SELECT Field
                           FROM @SomeVariableTable
                           )

但是你为什么要这样做呢?你可以简单地完成像

这样的事情
SELECT    *
FROM      AnotherTable at
WHERE     at.SomeField IN (
                           SELECT Field
                           FROM SomeTable
                           )