在mySQL和AS中使用count()

在mySQL和AS中使用count(),mysql,sql,select,count,group-by,Mysql,Sql,Select,Count,Group By,如何提取count()作为别名?我基本上有这个疑问 SELECT *, count(*) AS total_count FROM `action_log` WHERE `response` LIKE '%media%' AND `action_time` > '2014-01-05 21:31:33' AND `action_time` < '2014-01-07 12:30:00' AND `total_count` > '1' GROUP BY `usernam

如何提取
count()
作为别名?我基本上有这个疑问

SELECT *, count(*) AS total_count  
FROM `action_log` 
WHERE `response` LIKE '%media%' 
AND `action_time` > '2014-01-05 21:31:33' 
AND `action_time` < '2014-01-07 12:30:00' 
AND `total_count` > '1'
GROUP BY `username`

我知道语法不正确,我查看了mySQL引用,但似乎在任何地方都找不到它?

尝试使用
have
并设置为
选择
分组依据中相同的字段:

  SELECT username, count(*) as total_count
    FROM action_log 
    WHERE response LIKE '%media%' 
    AND action_time > '2014-01-05 21:31:33' 
    AND action_time < '2014-01-07 12:30:00' 
    GROUP BY username
    HAVING count(*) > 1
选择用户名,计数(*)作为总计数
从行动日志
其中响应为“%media%”
行动时间>'2014-01-05 21:31:33'
行动时间<'2014-01-07 12:30:00'
按用户名分组
计数(*)大于1的

我认为你应该研究一下
HAVING
子句。如果要根据聚合函数(如
count(*)
)的结果进行筛选,则需要使用
HAVING
。比如:

select some_fields, count(*) total_count
from action_log
where action_time > '2014-01-05 21:31:33' 
      and action_time < '2014-01-07 12:30:00'
group by some_fields
having count(*) > 1
选择一些字段,计数(*)总计数
从行动日志
其中行动时间>'2014-01-05 21:31:33'
行动时间<'2014-01-07 12:30:00'
按某些字段分组
计数(*)大于1的

您也可以在HAVING子句中使用上面的别名:

SELECT some_fields, count(*) AS total_count
FROM action_log
WHERE action_time > '2014-01-05 21:31:33' 
      AND action_time < '2014-01-07 12:30:00'
GROUP BY some_fields
HAVING total_count > 1
选择一些字段,计数(*)作为总计数
从行动日志
其中行动时间>'2014-01-05 21:31:33'
行动时间<'2014-01-07 12:30:00'
按某些字段分组
总计数大于1的

此查询是否有错误?您希望得到什么结果?@Curtis Try
SELECT action\u log.*,COUNT(*)…
您希望获得时间跨度内的行详细信息,以及检索到的行数。这是两件不同的事情,虽然有两种方法可以同时使用一个查询,但最好是(a)执行一个详细信息查询和一个计数查询,(b)执行,或者(c)执行一个详细信息查询并在前端程序中获取计数(如果有)。
SELECT some_fields, count(*) AS total_count
FROM action_log
WHERE action_time > '2014-01-05 21:31:33' 
      AND action_time < '2014-01-07 12:30:00'
GROUP BY some_fields
HAVING total_count > 1