首页 > 解决方案 > MySql 列出 sum > 0 的所有字段

问题描述

前段时间我有一个问题如何编写一个带有多个的 sql 查询count()并在这里得到了需要的答案

现在假设我有完全相同的表

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(*)所示usernamegroup 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 服务器版本相对应的手册,以username在第 1 行的 'GROUP BY LIMIT 0, 25'附近使用正确的语法

将不胜感激任何帮助。

标签: mysqlsqllaravel-5.2

解决方案


要列出满足您条件的用户名,您可以将查询编写为

select username
from table
group by username
having (
    sum(group_name ='A') > 0 and sum(group_name = 'B') > 0
) or sum(group_name = 'C') > 0

推荐阅读