前一段时间,我有一个问题:如何用多个 count()
,得到了需要的答案。
现在假设我有一张完全一样的table
ID|group_name|username
----------------------
1 | A | user1
----------------------
2 | B | user2
----------------------
3 | C | user1
...
同样的问题:
select count(*) from TABLE
where username='user1'
having (sum(group_name ='A') > 0
and sum(group_name = 'B') > 0)
or sum(group_name = 'C') > 0")
但现在我不想计数,而是列出所有与此对应的用户名 having
声明。也就是说,列出a组和b组或c组中的所有用户名。
现在我只试着 count(*)
与 username
和添加 group by username
在我询问的时候,像这样:
select username where username='user1' having (sum(group_name ='A') > 0 and sum(group_name = 'B') > 0) or sum(group_name = 'C') > 0") group by username
但我发现语法错误:
sql语法有错误;查看与mysql服务器版本相对应的手册,以获得使用“groupby”附近的正确语法 username
限位0,25'(第1行)
谢谢你的帮助。
3条答案
按热度按时间bogh5gae1#
按用户名聚合并移动
WHERE
把逻辑变成HAVING
条款:请注意,您当前的
WHERE
如果您真的希望用户完全是a/b或c,那么逻辑实际上与您所写的不一致。chy5wohz2#
您可以使用此查询获取
username
符合给定标准的:我们试着
username
来自users
它们都有条目group_name
sA
以及B
,或具有group_name
C
.希望这有帮助。
unftdfkk3#
要列出符合条件的用户名,可以将查询编写为