我有一个存储过程,它使用游标,每次获取一个重复项SELECT
,一次确定找到的 ID 数量 ( SELECT COUNT(ID) FROM TableA WHERE something.. @cur_var
),如果该值COUNT(ID)
大于指定值,则为UPDATE
另一个表发出一个,WHERE
使用上述 ID ( SELECT ID FROM TableA WHERE something.. @cur_var
) 。
这个想法是将其SELECT
存储在变量中(伪代码idlist = SELECT COUNT(ID) FROM TableA WHERE something.. @cur_var
)。然后在(伪代码length(idlist)中使用该列表的长度。在这种情况下,在语句 (再次伪代码,)中再次使用该列表IF
IF
>100
WHERE
UPDATE TableB SET value = @cur_var WHERE ID IN idlist
我希望足够具体,我想将 a 的结果保存SELECT
在变量中。然后使用结果WHERE IN variable
和变量中的行数在IF
.
使用 Microsoft SQL Server Enterprise Edition …
我不是数据库管理员,我的 SQL-foo 也不是很好(还),但是有一些任务需要在 MSSQL 中完成,其中一个是一个相当耗时的过程,我从 a CURSOR
and 中获取WHILE @@FETCH_STATUS = 0
,我有多个SELECT
s 和 an UPDATE
on巨大的桌子。(该程序有效,我已与同事核对过)
现在在脚本或程序中,我将有一个简单的打印 @current_cursor或在每个打印一个计数器WHILE
只是为了获得一些反馈。
我怎么能在 MSSQL 中做这样的事情?(使用 Microsoft SQL Server Enterprise Edition v9.00.3042.00,即 SQL Server 2005 Service Pack 2)
我可以做一个print @current_cursor
,还是在我的情况下不可行?
编辑
我已经RAISEERROR
用以下语句测试了:
DECLARE @cur_id int;
SET @cur_id = 0;
DECLARE Cur CURSOR FOR
SELECT ID FROM TableA
WHERE ID > 100 ORDER BY ID DESC
OPEN Cur
FETCH NEXT FROM …
Run Code Online (Sandbox Code Playgroud) 我有tableA
4 列:
IDA
(bigint)、IDB
(int)、IDC
(varchar(255)) 和comment
(varchar(255))。主键是 ( IDA
, IDB
, IDC
)。
我需要删除 ( IDA
, IDB
)计数大于 1 且comment
为“temp”的记录。我想出了以下 SQL 语句:
DELETE FROM tableA WHERE IDA, IDB IN
(SELECT IDA, IDB FROM tableA GROUP BY IDA, IDB HAVING COUNT(*) > 1)
AND comment = 'temp'
但我收到以下错误:“在预期条件的上下文中指定的非布尔类型的表达式,靠近 ','。[...]”
使用 Microsoft SQL Server Enterprise Edition v9.00.3042.00,即 SQL Server 2005 Service Pack 2
我很新,很感激任何帮助/建议。
我有一个包含 ~35k ID
s ( TableC
) 的表,一个包含多列 ( TableA
) 的ID
表,其中包括前面提到的表和第三个空表,具有与第二个表 ( TableB
)相同的列。
现在,我需要每个条目从复制TableA
到TableB
其中ID
的TableA
是TableC
。我想出了这个查询:
SELECT * INTO TableB
FROM TableA
WHERE ID IN
(SELECT ID FROM TableC)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误There is already an object named 'TableB' in the database.
.. 我不允许为此删除和重新创建TableB
。
使用 Microsoft SQL Server Enterprise Edition v9.00.3042.00,即 SQL Server 2005 Service Pack 2
我怎么能每个条目将复制TableA
到TableB
其中ID
的TableA
是TableC
?