SQL-循环从表中获取值并在循环中使用值

in

表格1:

在此处输入图片说明

SELECT * FROM Order WHERE OrderID = @OrderID

基本上,我想使用循环将上述Select语句运行5次(对于table1中的每个OrderID为1),并且将所有结果联合成单个结果。

卡米尔·卡普扎克(Kamil Kacprzak)

正如我在评论中所说,您可以向#tmp表中添加一个标志(例如isChecked),而不是从#tmp表中删除行。

--Creating schema
DROP TABLE IF EXISTS tblOrder
DROP TABLE IF EXISTS #tblResult
DROP TABLE IF EXISTS #tmp

CREATE TABLE tblOrder (OrderId int) 
CREATE TABLE #tblResult (OrderId int) 

INSERT INTO tblOrder 
VALUES (1),
        (2),
        (3),
        (4),
        (5);

-- Tmp table to itterate over       
SELECT OrderId INTO #tmp
FROM tblOrder

DECLARE @tmpOrder int
--Main loop with required statements inside
WHILE EXISTS (SELECT TOP 1 1 FROM #tmp)
    BEGIN
        --Taking next Id and storing the result
        SELECT TOP 1 @tmpOrder = OrderId FROM #tmp

        INSERT INTO #tblResult
        SELECT * FROM  tblOrder WHERE OrderId = @tmpOrder
        --PRINT @tmpOrder

        --Remove the row that operation has been performed for
        -- You can use additional variable as a counter or a flag in #tmp table instead
        DELETE FROM #tmp 
        WHERE OrderId = @tmpOrder
    END

    SELECT * FROM #tblResult

如果必须全部合并,我将结果声明为VARCHAR(max),则分配空字符串,然后循环将如下所示:

DECLARE @sResult VARCHAR (max) = ''
WHILE EXISTS (SELECT TOP 1 1 FROM #tmp)
    BEGIN
        --Taking next Id and storing the result
        SELECT TOP 1 @tmpOrder = OrderId FROM #tmp

        SET @sResult += 'SELECT * FROM tblOrder WHERE OrderId = '+CAST(@tmpOrder as VARCHAR(20))
        IF ((SELECT count(*) FROM #tmp) > 1 )
            BEGIN
                SET @sResult += ' UNION ALL '
            END
        --Remove the row that operation has been performed for
        -- You can use additional variable as a counter or a flag in #tmp table instead
        DELETE FROM #tmp 
        WHERE OrderId = @tmpOrder
    END

    EXEC (@sResult)

将空字符串分配给变量很重要,因为添加到NULL会导致错误。

让我知道这是否是您想要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL:在循环中使用变量来创建新表

来自分类Dev

SQL:在循环中使用变量来创建新表

来自分类Dev

在foreach循环中使用sql查询的foreach循环

来自分类Dev

在SQL FOR-IN(SELECT)循环中使用字符串变量的值

来自分类Dev

Oracle sql中的表值函数循环

来自分类Dev

循环中使用SQL查询的自动化错误

来自分类Dev

在 Foreach 循环中使用 Invoke-SQL 查询

来自分类Dev

如何从sql函数中的循环中获取数据

来自分类Dev

如何使用存储过程从循环中的 sql 列中解析值

来自分类Dev

Oracle SQL:在立即执行的内部循环中使用外部循环标识符

来自分类Dev

使用案例从SQL Server中的不同表中获取值

来自分类Dev

从方法中获取返回值以在 for 循环中使用

来自分类Dev

Oracle SQL,获取值并在多个case语句中使用它

来自分类Dev

循环中的MySQL查询与使用SQL连接

来自分类Dev

循环中的MySQL查询与使用SQL连接

来自分类Dev

使用表从SQL查询循环

来自分类Dev

从NetBeans中的SQL表获取值

来自分类Dev

从NetBeans中的SQL表获取值

来自分类Dev

在SQL上从多个表中获取值

来自分类Dev

从引用表中获取值的 SQL 查询

来自分类Dev

使用Powershell从SQL表获取值

来自分类Dev

SQL Server - 如何使用循环来控制选择表中声明变量的值

来自分类Dev

在SQL中获取值和类似值

来自分类Dev

在SQL中获取值和类似值

来自分类Dev

SQL Server 从表中获取值并从同一个表中连接值

来自分类Dev

如何在Oracle PL / SQL游标FOR循环中使用庞大的未命名列?

来自分类Dev

在SQL Server中的存储过程中使用循环

来自分类Dev

PHP - 在循环中从数组中获取值

来自分类Dev

使用表在 SQL 服务器程序中循环

Related 相关文章

热门标签

归档