WHERE子句中的mysql SUM()

时间:2015-08-11 06:32:01

标签: mysql sql select sum

我有点数据表,数据如下:

+----+---------+--------+
| id | user_id | points |
+----+---------+--------+
|  1 |     1   |   10   |
|  2 |     3   |    5   |
|  3 |     1   |   12   |
|  4 |     2   |   27   |
|  5 |     1   |   14   |
+----+---------+--------+

我需要来自上述数据的用户ID,这些点总和大于10

+--------+
| userid |
+--------+
|   1    |
|   2    |
+--------+

6 个答案:

答案 0 :(得分:7)

由于您尝试对用户聚合进行操作,因此您无法在查询中使用GROUP BY。相反,请使用HAVINGSELECT t.user_id FROM table t GROUP BY t.user_id HAVING SUM(t.points) > 10 子句,如下所示:

public function getFunctions()
{
    return array(
        new \Twig_SimpleFunction('my_mktime', array($this, 'myMktime')),
    );
}

public function myMktime($month, $day, $year)
{
    retrun \mktime( 0 , 0 , 0 , $month , $day , $year );
}

以下是 SQL Fiddle ,您可以在其中测试此查询。

答案 1 :(得分:1)

您需要使用havingselect user_id from TableName group by user_id having sum(points)>10

user_id
-------
1
2

示例结果:

select user_id from tablename
group by user_id
having sum(points)>10

SQL Fiddle

中的示例结果

答案 2 :(得分:1)

尝试此查询

select userid
from `table`
group by user_id
having sum(points) > 10

答案 3 :(得分:1)

您必须使用having子句:

{{1}}

答案 4 :(得分:1)

您不能在where子句中使用聚合表达式。但是,您可以使用having子句。它的作用类似于where条款,因为它用于过滤掉结果,但它在<{strong> group by子句后应用,所以它也可以对聚合表达式起作用:

SELECT   user_id
FROM     points
GROUP BY user_id
HAVING   SUM(points) > 10

答案 5 :(得分:1)

尝试此查询:

select user_id 
from [your_table] 
group by user_id 
having sum(points)>10