Select 创建一个表格,表格中填充了从;超级"-价值

Select 创建一个表格,表格中填充了从;超级"-价值,select,sql-server-2008-r2,create-table,Select,Sql Server 2008 R2,Create Table,我正在创建一个存储过程,它接收@UserId(int)和@CategoryId(int)。 我现在必须断开用户和类别之间的任何连接,但是-用户仅直接连接到一个或多个子类别(此连接可在名为“HelpWith”的表中找到),而每个子类别又连接到单个类别(一个类别可以包含多个子类别)。 为了找到这些值,我做了以下SELECT语句: SELECT SubcategoryId FROM [Subcategory] as s LEFT JOIN [Category] as c ON c.CategoryId

我正在创建一个存储过程,它接收@UserId(int)和@CategoryId(int)。 我现在必须断开用户和类别之间的任何连接,但是-用户仅直接连接到一个或多个子类别(此连接可在名为“HelpWith”的表中找到),而每个子类别又连接到单个类别(一个类别可以包含多个子类别)。 为了找到这些值,我做了以下SELECT语句:

SELECT SubcategoryId
FROM [Subcategory] as s
LEFT JOIN [Category] as c ON c.CategoryId = s.CategoryId
WHERE c.Categoryid = @CategoryId 
上面的SELECT语句可以“查找”多个子类别ID,因此,我想我必须以某种方式将值插入表中,以便执行以下操作:

DELETE FROM HelpWith

WHERE SubcategoryId IN (SELECT ID FROM @TempTable)
AND userId = @UserId

有人知道如何实现这一点吗?

通过在删除中使用联接来解决

USE [MAPP]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[MA_SetTutor_RemoveCategory] 

    @UserId int,
    @CategoryId int

AS
BEGIN

DELETE FROM HelpWith

WHERE SubcategoryId IN
(
    SELECT SubcategoryId
    FROM [Subcategory] AS s
    LEFT JOIN [Category] AS c ON c.CategoryId = s.CategoryId
    WHERE c.CategoryId = @CategoryId
    AND userId = @UserId
)
END