0

我有两张桌子。

一个是Started_Games

level_id INT
user_id INT

另一个是Statistics

stat_id INT
stat_key NVARCHAR[30]
stat_value INT

我的网络应用程序包含一个只有会员才能玩的关卡的游戏。

开始每个游戏后,调用一个函数并执行以下操作(在一个 SQL 语句中): 如果没有记录同时包含Id用户和他开始的游戏级别,则将其添加到表中Started_Games

当用户注销时,我想做以下事情(只需要 SQL):

首先,选择他开始的游戏关卡计数。然后,使用 = 更新特定行中的表Statistics,并将找到的计数添加到其中。之后,删除当前用户的所有记录(“计数”行);stat_keyStartedGamesCount

我从来没有在同一个查询中实现过多个 SQL 语句,这就是我迄今为止想出的:

DELETE FROM [Started_Games] WHERE [user_id] IN (SELECT COUNT(*) FROM [Started_Games] WHERE [user_id] = @UserId)

请注意,它不包括我要执行的更新过程。

有什么帮助吗?

4

2 回答 2

0

可能这对你有帮助-

CREATE PROCEDURE dbo.log_out 
(
    @UserId INT
)
AS BEGIN

    INSERT INTO dbo.[Statistics](stat_id, stat_key, stat_value)
    SELECT [user_id], '???', COUNT(1) 
    FROM dbo.Started_Games
    WHERE [user_id] = @UserId
    GROUP BY [user_id] 

    DELETE FROM dbo.Started_Games
    WHERE [user_id] = @UserId

END
于 2013-04-27T11:21:18.313 回答
0

我建议您编写更新语句,然后在存储过程中包含更新和删除语句,并从您的代码中调用它。如果您无法进行两次数据库调用,一次进行更新,一次进行删除

create procedure sort_out_user @user_id int
as 
begin
  update ....

  delete from ....
end

这可能会有所帮助

于 2013-04-27T10:31:46.917 回答