sql - SQL While 循环插入另一个表中的值
问题描述
我正在尝试创建一个 SQL While 循环,该循环将使用另一个表中的值更新一个临时表。另一个表中的值:
477286
560565
499330
391827
127375
526354
501736
357359
410433
500946
261297
377667
135931
235691
247239
143672
548752
471945
...
但是,写了以下内容,它只多次插入最后一个值。
这是代码:
USE Reports
GO
CREATE TABLE #TempTable (CreatedByID int, LastUpdatedByID int, ID int,
AlertDE int, Alert char(50), StartDTTM datetime, EndDTTM datetime,
IsInactiveFLAG char(1),AlertDetails char(1));
DECLARE @numrows INT
SELECT @numrows = COUNT(*) FROM [Reports].[dbo].[Eligible]
DECLARE @id int
DECLARE @LoopCount INT = 1
DECLARE @count int = @numrows
SELECT @id = [id] FROM [Reports].[dbo].[Eligible]
WHILE (@LoopCount <= @count)
BEGIN
INSERT INTO #TempTable (CreatedByID, LastUpdatedByID, ID, AlertDE, Alert, StartDTTM, EndDTTM, IsInactiveFLAG,AlertDetails)
VALUES (52,52,@id,0,'Eligible',CURRENT_TIMESTAMP,'1900-01-01
00:00:00.000','N','')
SET @LoopCount = @LoopCount + 1
END
SELECT * FROM #TempTable
DROP TABLE #TempTable
我假设我必须告诉它以某种方式遍历另一个表中的值,但如果这是正确的方法,或者一般来说我在公共汽车上走了很长的路,我并不肯定。
解决方案
Why are you using a loop? You can do this with an insert . . . select
statement:
INSERT INTO #TempTable (CreatedByID, LastUpdatedByID, ID, AlertDE, Alert, StartDTTM, EndDTTM, IsInactiveFLAG, AlertDetails)
SELECT 52, 52, e.id, 0, 'Eligible', CURRENT_TIMESTAMP, '1900-01-01 00:00:00.000', 'N', ''
FROM [Reports].[dbo].[Eligible] e ;
See eg https://www.w3schools.com/sql/sql_insert_into_select.asp for more info.
推荐阅读
- python - 从 Df 创建新表,显示一列的计数和另一列的算术
- machine-learning - 交叉验证中的 Cross_val_score - 它是在训练集还是测试集上执行的?
- sql - 当传感器和温度值在一分钟内超过阈值时生成警报
- swift - Swift 如何将闭包从一个函数传递到另一个函数?
- javascript - 无法使用地图功能更改数组数据
- wicket - 避免重复已通过 ComponentFeedbackMessageFilter 显示的反馈
- gatsby - 如何在 gatsby 中以编程方式创建的页面之上创建自定义路由
- c++ - Why does not AVX further improve the performance compared with SSE2?
- javascript - 在 JavaScript 中是否有用于检查字符串参数是否仅包含数字的函数?
- python - 如何清理 HTML 删除重复的段落?