检查SQL数据库中是否已存在项目列表

时间:2014-05-12 09:55:31

标签: sql many-to-many

我只想在数据库中已存在相同的组时才创建一组用户。

我有一个包含三列的GroupUser表:主键,GroupId和UserId。一组用户被描述为该表中的多行共享相同的GroupId。 给定UserId列表,我想找到匹配的GroupId(如果存在)。

在SQL中最有效的方法是什么?

2 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。这个答案仅适用于sql server(因为你的标签中没有提到它)

  1. 将逗号分隔的userid列表传递给存储过程,并在SP中使用此命令创建动态查询,并使用EXEC命令执行查询。 This链接将在这方面为您提供指导

  2. 在SP中使用表值参数。这仅适用于sql server 2008及更高版本。

  3. 以下链接将帮助您入门。

    http://www.codeproject.com/Articles/113458/TSQL-Passing-array-list-set-to-stored-procedure-MS

    希望这有帮助。

答案 1 :(得分:0)

假设您的UserId列表存储在名为' MyUserIDList'的表中,以下查询将有效地返回包含您的用户列表的GroupId列表。 (SQL Server语法)

Select GroupId
 From (
  Select GroupId
       , count(*) as GroupMemberCount
       , Sum(case when MyUserIDList.UserID is null then 0 else 1 End) as  GroupMemberCountInMyList
  from GroupUser 
     left outer join MyUserIDList on GroupUser.UserID=MyUserIDList.UserID
 group by GroupId
 ) As MySubQuery 
Where GroupMemberCount=GroupMemberCountInMyList