0

下面是我的sql语句

INSERT INTO tblRB_ReportFilterUserAssoc (
    [FK_ReportID],
    [UserID],
    [FilterExpression],
    [DateFilterValues],
    [IsCustomReport]
    )
SELECT [FK_ReportID],
    @UserId,
    [FilterExpression],
    [DateFilterValues],
    [IsCustomReport]
FROM tblRB_ReportFilterUserAssoc
WHERE UserID = @AssignedUserID

有 UserID 的条件

它基本上是将所有记录插入到另一个用户的特定用户的相同记录中

我必须检查新用户是否存在特定的过滤器,然后不要插入

案子

我怎样才能做到这一点

[FK_ReportID] 用户 ID
1 100
2 100
3 100
1 101   

现在我想将用户 ID 100 的所有记录插入到用户 ID 101 的同一张表中,但是由于报告 ID 1 已经存在于 101 的表中,所以它应该只插入 2、3、4 的记录

我们应该如何限制它

谢谢你

4

2 回答 2

1

像这样的东西怎么样

SELECT 
    [FK_ReportID]
    ,@UserId
    ,[FilterExpression]
    ,[DateFilterValues]
    ,[IsCustomReport]
FROM    tblRB_ReportFilterUserAssoc m
WHERE   UserID = @AssignedUserID
AND     NOT EXISTS (
        SELECT  1 
        FROM    tblRB_ReportFilterUserAssoc s 
        WHERE   m.[FK_ReportID] = s.[FK_ReportID] 
        AND     s.UserID = @UserID
    )

看到您使用的是 SQL Server 2008,您是否尝试过使用EXCEPT

就像是

SELECT 
    [FK_ReportID]
    ,@UserId
    ,[FilterExpression]
    ,[DateFilterValues]
    ,[IsCustomReport]
FROM    tblRB_ReportFilterUserAssoc m
WHERE   UserID = @AssignedUserID
EXCEPT
SELECT 
    [FK_ReportID]
    ,@UserId
    ,[FilterExpression]
    ,[DateFilterValues]
    ,[IsCustomReport]
FROM    tblRB_ReportFilterUserAssoc m
WHERE   UserID = @UserId
于 2013-09-13T06:26:49.400 回答
1

只需使用除外:

INSERT  INTO tblRB_ReportFilterUserAssoc
        ( [FK_ReportID],
          [UserID],
          [FilterExpression],
          [DateFilterValues],
          [IsCustomReport]

        )
        SELECT  [FK_ReportID],
                @UserId,
                [FilterExpression],
                [DateFilterValues],
                [IsCustomReport]
        FROM    tblRB_ReportFilterUserAssoc
        WHERE   UserID = @AssignedUserID
        EXCEPT
        SELECT  [FK_ReportID],
                UserId,
                [FilterExpression],
                [DateFilterValues],
                [IsCustomReport]
        FROM    tblRB_ReportFilterUserAssoc
        WHERE UserID = @UserId 
于 2013-09-13T06:29:25.553 回答