mysql - 对于冗长的 MySql 查询,组函数的使用无效

标签 mysql sql

我一直在尝试将这个查询放在一起,但是当我认为我已经完成并尝试运行它时,我收到了该错误。我很确定这与这条线有关:

-> AND SUM(cr.file_size) > 5000000000

   SELECT ss.TITLE
        -> ,SUM(cr.file_size)
        -> ,gr.user_id
        -> ,ru.givenname
        -> ,ru.sn
        -> ,ru.mail
        -> FROM CONTENT_RESOURCE cr
        -> ,SAKAI_SITE ss
        -> ,SAKAI_REALM_RL_GR gr
        -> ,SAKAI_REALM rl
        -> ,rutgers_user ru
        -> ,SAKAI_USER_ID_MAP map
        -> WHERE cr.CONTEXT = ss.SITE_ID
        -> AND SUM(cr.file_size) > 5000000000
        -> AND rl.realm_id = CONCAT ('/site/',ss.site_id)
        -> AND rl.realm_key = gr.realm_key
        -> AND gr.role_key IN (7,3)
        -> AND gr.user_id = map.user_id
        -> AND map.eid = ru.uid
        -> INTO OUTFILE '/tmp/siteContentUsage.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

最佳答案

您需要一个having子句。聚合函数不属于 where 子句:

HAVING SUM(cr.file_size) > 5000000000

当然,这前提是您还有一个 group by 子句,因为 having 子句应该位于 group by 之后。我不确定那是什么,也许是group by user_id

此外,您应该学习正确的显式 join 语法。简单规则:切勿在 from 子句中使用逗号。

关于mysql - 对于冗长的 MySql 查询,组函数的使用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325330/

相关文章:

php - 将 mySQL 插入和更新语句切换为 PDO 准备语句以防止 SQL 注入(inject)

mysql - 使用sql查找源和最终目的地

Sql 查询,选择唯一标识符给出 - 将数据类型 varchar 转换为 uniqueidentifier 时出错

php - 从 MYSQL 数据库填充 PHP 对象

mysql - 截断不正确的日期值

mysql - 尽管使用 EXPLAIN 所示的索引,但跨数据库查询的运行时间异常长

Mysql选择重复行之一

sql - 在包含万亿字节数据的 postgres 关系表上运行 select 命令

sql - 通过在 Big Query 中插入日期记录来填充数据

java - 在 Java 中设置值失败