小编Dae*_*hos的帖子

将 SELECT 的结果列表存储在变量中以进行计数并使用结果

我有一个存储过程,它使用游标,每次获取一个重复项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)中使用该列表的长度。在这种情况下,在语句 (再次伪代码,)中再次使用该列表IFIF>100WHEREUPDATE TableB SET value = @cur_var WHERE ID IN idlist

我希望足够具体,我想将 a 的结果保存SELECT在变量中。然后使用结果WHERE IN variable和变量中的行数在IF.

使用 Microsoft SQL Server Enterprise Edition …

sql-server-2005 sql-server count update

4
推荐指数
1
解决办法
5万
查看次数

使用打印跟踪时间密集型存储过程

我不是数据库管理员,我的 SQL-foo 也不是很好(还),但是有一些任务需要在 MSSQL 中完成,其中一个是一个相当耗时的过程,我从 a CURSORand 中获取WHILE @@FETCH_STATUS = 0,我有多个SELECTs 和 an UPDATEon巨大的桌子。(该程序有效,我已与同事核对过)

现在在脚本或程序中,我将有一个简单的打印 @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)

sql-server-2005 sql-server cursors

4
推荐指数
2
解决办法
1692
查看次数

从表中删除另一个选择的三个键中的两个

我有tableA4 列:

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

我很新,很感激任何帮助/建议。

sql-server-2005 sql-server delete

2
推荐指数
1
解决办法
2087
查看次数

选择现有表,其中 ID 在另一个表中

我有一个包含 ~35k IDs ( TableC) 的表,一个包含多列 ( TableA) 的ID表,其中包括前面提到的表和第三个空表,具有与第二个表 ( TableB)相同的列。

现在,我需要每个条目从复制TableATableB其中IDTableATableC。我想出了这个查询:

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

我怎么能每个条目将复制TableATableB其中IDTableATableC

sql-server-2005 sql-server select copy

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql-server ×4

sql-server-2005 ×4

copy ×1

count ×1

cursors ×1

delete ×1

select ×1

update ×1