avatar
求教一条MS SQL语句# Database - 数据库
R*s
1
大家猜猜是啥,猜中的奖励6个包子...
不是湖北小吃哦...也是风云人物哦....
avatar
b*2
2
GroupMember Table结构请见图片1。
其中,GroupMemberID是PK。UserID是FK。
我想实现的功能。
UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
相关的人数。
前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
我瞎写了一小段代码,请高手们指教。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
GROUP BY UserID
运行以上代码,可以显示出TABLE里所有不同的GROUP的人数。
但是如果我这样写。
SELECT COUNT(UserID) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID
结果就是错误的。。。。
毕竟不是专业DBA。。。。郁闷死我了。请高手们赐教,万分感谢。
avatar
c*n
3
猴头菇炖猪头。。。

【在 R*****s 的大作中提到】
: 大家猜猜是啥,猜中的奖励6个包子...
: 不是湖北小吃哦...也是风云人物哦....

avatar
B*g
4
不是专业DBA,帮你顶一下

【在 b********2 的大作中提到】
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers

avatar
A*s
5
谜面太差,改过再来。。。我必将6个豹子拿下,,,
avatar
i*a
6
SELECT GroupID, COUNT(1) AS Counter
FROM GroupMembers
WHERE UserID=3
GROUP BY GroupID

【在 b********2 的大作中提到】
: GroupMember Table结构请见图片1。
: 其中,GroupMemberID是PK。UserID是FK。
: 我想实现的功能。
: UserID=3,作为一个输入的变量,然后列出该用户所在的所有Group,并且统计该Group里
: 相关的人数。
: 前半部分,也就是显示该用户所在的所有Group我已经解决,因为这个最容易。但是如
: 何显示出相关的人数,这个部分真的让我非常非常的抓狂啊。。。
: 我瞎写了一小段代码,请高手们指教。
: SELECT COUNT(UserID) AS Counter
: FROM GroupMembers

avatar
A*s
7
草原上升起不落的月亮
avatar
B*g
8
你这个和lz的有什么区别。

Group里
是如

【在 i****a 的大作中提到】
: SELECT GroupID, COUNT(1) AS Counter
: FROM GroupMembers
: WHERE UserID=3
: GROUP BY GroupID

avatar
c*n
9
韭菜+煎鸡蛋。。。。。。。。。。。。。。。。。

【在 A*****s 的大作中提到】
: 草原上升起不落的月亮
avatar
i*a
10
without showing GroupID, who know what is what ah

【在 B*****g 的大作中提到】
: 你这个和lz的有什么区别。
:
: Group里
: 是如

avatar
C*H
11
我打算做个 紫菜蛋花汤, 取名风卷残云,致敬给我风二哥。。。。

【在 R*****s 的大作中提到】
: 大家猜猜是啥,猜中的奖励6个包子...
: 不是湖北小吃哦...也是风云人物哦....

avatar
B*g
12
lz都说这个答案是不对滴

【在 i****a 的大作中提到】
: without showing GroupID, who know what is what ah
avatar
A*s
13
哦,赶紧注册专利。。。

【在 c*****n 的大作中提到】
: 韭菜+煎鸡蛋。。。。。。。。。。。。。。。。。
avatar
i*a
14
with out order by, without outputing the group id, lz does not know what
those numbers are

【在 B*****g 的大作中提到】
: lz都说这个答案是不对滴
avatar
c*n
15
我晚上削个苹果,致敬苹巨侠。。。

【在 C*****H 的大作中提到】
: 我打算做个 紫菜蛋花汤, 取名风卷残云,致敬给我风二哥。。。。
avatar
B*g
16
一般来说count得出来都是1

【在 i****a 的大作中提到】
: with out order by, without outputing the group id, lz does not know what
: those numbers are

avatar
R*s
17
上面都不对,都不够风云...
avatar
t*a
18
抛砖引玉:
SELECT
GroupID
, UserCount
FROM (
SELECT GroupID
FROM GroupMembers
WHERE UserID=3
) GRP INNER JOIN (
SELECT
GroupID
, COUNT(*) AS UserCount
FROM GroupMembers
GROUP BY
GroupID
) CNT
ON
GRP.GroupID = CNT.GroupID
avatar
C*H
19
你这太简洁了,我好歹想的还是拔丝苹果,唠唠叨叨,粘粘嗒嗒,挥之不去。。。。

【在 c*****n 的大作中提到】
: 我晚上削个苹果,致敬苹巨侠。。。
avatar
i*a
20
SELECT GroupID, COUNT(1) AS cnt
FROM dbo.GroupMember
WHERE GroupID IN
(
SELECT GroupID
FROM dbo.GroupMember
WHERE UserID = 3
)
GROUP BY GroupID

【在 B*****g 的大作中提到】
: 一般来说count得出来都是1
avatar
c*n
21
难道你要红烧驴肉。。。

【在 R*****s 的大作中提到】
: 上面都不对,都不够风云...
avatar
B*g
22
如果只让scan table一次

【在 i****a 的大作中提到】
: SELECT GroupID, COUNT(1) AS cnt
: FROM dbo.GroupMember
: WHERE GroupID IN
: (
: SELECT GroupID
: FROM dbo.GroupMember
: WHERE UserID = 3
: )
: GROUP BY GroupID

avatar
A*s
23
haha ....

【在 c*****n 的大作中提到】
: 我晚上削个苹果,致敬苹巨侠。。。
avatar
b*2
24
哈哈,多谢这么多回复。我马上就去实际试验下各位的建议。
如果把这个问题还个方式来表达,其实就非常简单了。
某学生TAKE了5门课,我想知道这5门课分别都有多少学生,并同时显示该门课的相关信息
avatar
c*n
25
我削苹果你来拔丝。。。。

【在 C*****H 的大作中提到】
: 你这太简洁了,我好歹想的还是拔丝苹果,唠唠叨叨,粘粘嗒嗒,挥之不去。。。。
avatar
b*2
26
IMAJIA这个能用,万分感谢啊。可惜俺实在没包子。。。。能先欠着吗。。。
avatar
x*9
27
驴打滚?。。。

【在 c*****n 的大作中提到】
: 难道你要红烧驴肉。。。
avatar
b*2
28
更新一下我的WORKING CODES
见图。
谢谢大家的回复。
这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
数。
可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。
avatar
C*H
29
小心动物保护组织找上门。。。。
做个驴打滚的了。

【在 c*****n 的大作中提到】
: 难道你要红烧驴肉。。。
avatar
i*a
30
DECLARE @UserID AS INT
DECLARE @UserName AS VARCHAR(50)
SET @UserID = 3
SELECT @UserName = UserName
FROM dbo.[User]
WHERE UserID = @UserID
SELECT gm.GroupID
, @UserID AS UserID
, MAX(g.GroupName) AS GroupName
, COUNT(1) AS cnt
, @UserName AS CreatorName
FROM dbo.GroupMember gm
INNER JOIN dbo.[Group] g
ON gm.GroupID = g.GroupID
WHERE gm.GroupID IN ( SELECT GroupID
FROM dbo.GroupMember
WHERE UserID = @UserID )
GROUP BY gm.GroupID

【在 b********2 的大作中提到】
: 更新一下我的WORKING CODES
: 见图。
: 谢谢大家的回复。
: 这个QUERY现在可以返回所有该用户所在GROUP的详细信息,并且包括该GROUP所有的人
: 数。
: 可惜不知道PERFORMANCE如何了。。。估计差的要死,呵呵。

avatar
A*e
31
难道要清蒸鱼爸爸。。。

【在 R*****s 的大作中提到】
: 上面都不对,都不够风云...
avatar
i*a
32
太高級,想不出來

【在 B*****g 的大作中提到】
: 如果只让scan table一次
avatar
C*H
33
一脉相承~!

【在 x*********9 的大作中提到】
: 驴打滚?。。。
avatar
b*2
34
哈哈,多谢,你这个比我那个更有可读性了。。。我那个差点把自己给绕死了。。。
CreatorName那里写的好像不对,呵呵。俺睡觉去了。
avatar
R*s
35
对!还是香香聪明~~

【在 x*********9 的大作中提到】
: 驴打滚?。。。
avatar
f*g
36
SELECT g.GroupId, g.UserID, (SELECT COUNT(c.UserID) FROM GroupMembers AS c
WHERE c.GroupId = g.GroupId) AS GroupUserCount
FROM GroupMembers AS g
WHERE g.UserId = 3
avatar
A*e
37
。。。这个不是你挑战。。。

【在 R*****s 的大作中提到】
: 对!还是香香聪明~~
avatar
b*2
38
哇塞,你这个QUERY完美了。。。赞。多谢多谢。

【在 f***g 的大作中提到】
: SELECT g.GroupId, g.UserID, (SELECT COUNT(c.UserID) FROM GroupMembers AS c
: WHERE c.GroupId = g.GroupId) AS GroupUserCount
: FROM GroupMembers AS g
: WHERE g.UserId = 3

avatar
R*s
39
嗷嗷如果不让就算了...大家还是讴歌正面人物吧..

【在 A***e 的大作中提到】
: 。。。这个不是你挑战。。。
avatar
B*g
40
performance should be worse, hehe
SELECT groupid, COUNT ( * ) CNT
FROM groupmembers
GROUP BY groupid
HAVING SUM (CASE WHEN userid = 3 THEN 1 ELSE 0 END) > 0

【在 i****a 的大作中提到】
: 太高級,想不出來
avatar
x*9
41
谢帅哥包子!抱拳!

【在 R*****s 的大作中提到】
: 对!还是香香聪明~~
avatar
A*e
42
你也别给自己惹麻烦哈。。。

【在 R*****s 的大作中提到】
: 嗷嗷如果不让就算了...大家还是讴歌正面人物吧..
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。