简体   繁体   中英

SQL selecting multiple record by different variable

Ok, so I have a table Assignment :

[UserId]
[GroupId]
[UpdatedBy]
[UpdatedAt]

Also, I have a function for returning users from a specific group:

select UserId 
from dbo.GetGroupUsers() ggu 
where ggu.GroupId = ?

In Assignment , I want to check all groups that our user is listed and then I want to select ALL users from these groups, without duplicate.

How can I achieve this?

Edit: Sample output form selecting groupid = 4样本输出

for example user "test1" belong to other group where id=2 at the same time and i want selected all users from for example group 2 and 4 (cause in this example test1 said so) without records duplicate

All groups from one UserId (say UserId 10):

select GroupId from Assignment where UserId = 10

Select all users from those groups (without duplicate):

select distinct UserId 
from dbo.GetGroupUsers() ggu 
where ggu.GroupId in (select GroupId from Assignment where UserId = 10)

I hope this is what you wanted.

An inner self join should get you the IDs of the users you're looking for. Join the result with your user table (which you didn't post) to possibly get other information about these users.

SELECT DISTINCT
       a2.userid
       FROM assignment a1
            INNER JOIN assignment a2
                       ON a2.groupid = a1.groupid
       WHERE a1.userid = ?;

(Replace the ? with the ID of the user, you want to start with.)

Assuming your input is a user id:test1 and assuming that you are just looking at one table (Assignment)

DECLARE @UserId INT = 2
;WITH GROUPS AS
(
SELECT DISTINCT GroupId FROM Assignment WHERE UserId = @UserId 
)
SELECT distinct assgn.UserName, gps.GroupId FROM Assignment assgn
INNER JOIN
GROUPS gps ON
assgn.GroupId = gps.GroupId

Please let me know if this helps

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM