需要在t-sql中为每个循环创建一个更改变量

时间:2016-08-25 04:10:21

标签: sql-server-2008

我有三个整数7,3和2.

我想编写一个脚本,每次循环更改我的变量,然后使用每个更改变量的变更变量执行SQL请求。我不知道该怎么做。

我知道如何申报变量

declare @myvariable int;
set @myvariable = 7

select * 
from mytable 
where field1 = @myvariable

请帮忙

2 个答案:

答案 0 :(得分:0)

您可以使用tablevariable。

方法-1使用While循环

DECLARE @TableVariable TABLE (
    Id INT identity(1, 1)
    ,Variable INT
    )
DECLARE @End INT = 0
    ,@start INT = 1
    ,@myvariable INT

INSERT INTO @TableVariable
VALUES (7)
    ,(3)
    ,(2)

WHILE @Start <= @End
BEGIN
    SELECT *
    FROM mytable
    WHERE field1 IN (
            SELECT variable
            FROM @TableVariable
            WHERE Id = @Start
            )

    SET @Start = @Start + 1
END

方法-2使用Join

 DECLARE @TableVariable TABLE (
        Id INT identity(1, 1)
        ,Variable INT
        )

    INSERT INTO @TableVariable
    VALUES (7)
        ,(3)
        ,(2)

SELECT *
FROM mytable m
INNER JOIN @TableVariable t ON m.field1 = t.Variable

答案 1 :(得分:0)

好的方法1的问题是语句Whole @ start&lt; = @end当@end为0.我将它改为3并且效果很好。谢谢你的帮助。

DECLARE @TableVariable TABLE(     Id INT身份(1,1)     ,变量INT     ) DECLARE @End INT = 3 - 原始示例为0     ,@ start INT = 1     ,@ myvariable INT

INSERT INTO @TableVariable 价值观(7)     ,(3)     ,(2)

WHILE @Start&lt; = @End 开始     选择前100名*     FROM provider_status PS     在哪里PS.provider_status_type_id IN(

        SELECT variable
        FROM @TableVariable
        WHERE Id = @Start
        )

SET @Start = @Start + 1

我仍然不知道如何设置和使用@myvariable。