检查SQL中是否存在多个条目,删除它们并添加一个新条目

时间:2013-07-18 16:25:52

标签: sql-server tsql

我的表格包含RowId列,PersonIdActivityTypeIdGroupId,我选择了上面的列,但效果很好。

以上表格数据 以上数据可以包含类似数据,相同的`PersonId可以包含多个activityTypeId,而activityTypeId可以包含GroupId。像这样的东西

RowId  PersonId ActivityTypeId GroupId
1       20          1             2
2       20          2             2
3       20          7             8

现在我的问题是,如果对于特定的PersonId,同一组中有超过3个条目。我希望在选择并手动添加新人时删除该人的所有条目。这可以在商店程序中完成吗?

任何帮助将不胜感激。

道歉,如果Title没有意义。

1 个答案:

答案 0 :(得分:1)

由于您要对不同的表进行多次调用,因此存储过程将是最佳选择。

要清楚,您是尝试根据特定PersonID删除所有条目,然后从SELECT语句中添加一个条目?可以使用以下语法完成:

CREATE PROC my_sp 
@deletedID int, -- This is the ID of the person you are trying to delete
@insertedID int -- This is the ID of the person you are trying to add
AS
BEGIN
SET NOCOUNT ON -- This will ensure your select statement is not interefered

DELETE FROM Table WHERE PersonID = @deletedID

INSERT INTO Table
SELECT *
FROM Table2
WHERE PersonID = @insertedID
END

要调用此存储过程,只需使用带参数的EXECUTE语句:
EXEC my_sp 0123, 5555其中0123是已删除人员的ID,5555是已添加的人员。

如果您想手动将数据传递到INSERT INTO而不是使用SELECT语句,那么您必须添加更多参数并使用

INSERT INTO Table
VALUES(@param1, @param2, @param3, ... etc)

以下是使用INSERT INTO的链接,这也可能有所帮助:http://www.w3schools.com/sql/sql_insert.asp