我遇到了一些问题,我需要所有选择器,但我只想组aspnet_Users.Userid
我应该怎么做?
这是我的问题:
SELECT
aspnet_Users.UserId, aspnet_Users.UserName,
Friends.Verified, Friends.FriendUserId
FROM
[aspnet_Users]
INNER JOIN
Friends ON Friends.UserId = aspnet_Users.UserId OR Friends.FriendUserId = aspnet_Users.UserId
WHERE
aspnet_Users.UserId IN
(SELECT UserId as Id FROM Friends
WHERE FriendUserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57'
UNION
SELECT FriendUserId as Id FROM Friends
WHERE UserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57')
GROUP BY
aspnet_Users.UserId, aspnet_Users.UserName,
Friends.Verified, Friends.FriendUserId
存储过程结构:
表格 [aspnet_Users]和[朋友]
列 [aspnet_Users.UserId],[aspnet_Users.UserName],[Friends.Verified],[Friends.FriendUserId]
这是我需要使用该过程获得的数据,但问题是每个用户可以拥有多个朋友,这意味着如果是这样,将会有多个Friends值。这就是为什么我不能使用这些值进行分组的原因,因为它给了我带有错误值的dublicates。
预期输出:
aspnet_Users.UserId (这是朋友的用户ID,请注意,这并不意味着它的FriendUserId)
aspnet_Users.UserName (这是基于上面解释的UserId的朋友的UserName)
Friends.Verified (对或错。友情表中的已验证值)
Friends.FriendUserId (朋友表中的FriendUserId值)
答案 0 :(得分:1)
你需要分组吗?您没有使用任何聚合函数(例如总和,计数)
您还没有说清楚您要查找的结果 - 我猜测用户的所有详细信息,包括用户自己?
当然你可以这样做:
Select a.userid, a.username, f.verified, f.userid
From aspnet_users a
Full outer join friends f on f.frienduserid = a.userid
Where a.userid = @userid or f.frienduserid = @userid
答案 1 :(得分:1)
如果您在朋友表中的关系不完全互惠,则可以使用此查询。
否则UNION的任何一部分都可以自行工作
SELECT U.UserId, U.UserName, F.Verified, F.FriendUserId
FROM Friends F
JOIN aspnet_Users U ON U.UserId=F.UserId
WHERE F.FriendUserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57'
UNION
SELECT U.UserId, U.UserName, F.Verified, F.FriendUserId
FROM Friends F
JOIN aspnet_Users U ON U.UserId=F.FriendUserId
WHERE F.UserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57'
答案 2 :(得分:-1)
您可以使用DISTINCT
SELECT DISTINCT
aspnet_Users.UserId, aspnet_Users.UserName,
Friends.Verified, Friends.FriendUserId
FROM
[aspnet_Users]
INNER JOIN
Friends ON Friends.UserId = aspnet_Users.UserId OR Friends.FriendUserId = aspnet_Users.UserId
WHERE
aspnet_Users.UserId IN
(SELECT UserId as Id FROM Friends
WHERE FriendUserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57'
UNION
SELECT FriendUserId as Id FROM Friends
WHERE UserId='3d1224ac-f2ad-45d4-aa84-a98e748e3e57')