我有两张桌子。
一个是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_key
更新特定行中的StartedGamesCount
表,并将找到的计数添加到其中。之后,删除当前用户的所有记录(“计数”行);
我从未在同一个查询中实现过多个SQL语句,这是我到目前为止所提出的:
DELETE FROM [Started_Games] WHERE [user_id] IN (SELECT COUNT(*) FROM [Started_Games] WHERE [user_id] = @UserId)
请注意,它不包括我想要执行的更新过程。
有任何帮助吗?
答案 0 :(得分:0)
我建议您编写更新语句,然后在存储过程中包含update和delete语句,并从代码中调用它。如果没有你可以做两个数据库调用,一个用于执行更新,一个用于删除
create procedure sort_out_user @user_id int
as
begin
update ....
delete from ....
end
答案 1 :(得分: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