【问题标题】:mysql SUM() in a WHERE clausemysql SUM() 在 WHERE 子句中
【发布时间】:2015-11-03 06:19:42
【问题描述】:

我的积分表数据如下:

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

我需要上面数据中的用户 ID 那些点总和大于 10

喜欢

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

【问题讨论】:

    标签: mysql sql select sum


    【解决方案1】:

    您不能在查询中使用WHERE,因为您正在尝试对用户聚合进行操作。相反,使用 GROUP BYHAVING 子句,如下所示:

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

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

    【讨论】:

      【解决方案2】:

      试试这个查询

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

      【讨论】:

        【解决方案3】:

        你需要使用group byhaving

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

        示例结果:

        user_id
        -------
        1
        2
        

        SQL Fiddle 中的示例结果

        【讨论】:

          【解决方案4】:

          您不能在where 子句中使用聚合表达式。但是,您可以使用 having 子句。它的作用类似于 where 子句,因为它用于过滤结果,但它应用在 group by 子句之后,因此它也可以作用于聚合表达式:

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

          【讨论】:

            【解决方案5】:

            你必须使用having 子句:

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

            【讨论】:

              【解决方案6】:

              试试这个查询:

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

              【讨论】:

                猜你喜欢
                • 2014-09-16
                • 2017-05-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-12-17
                • 1970-01-01
                • 1970-01-01
                • 2015-10-30
                相关资源
                最近更新 更多