如何计算mysql中的子查询

如何计算mysql中的子查询,mysql,sql,Mysql,Sql,我有一个疑问: Select DATE_FORMAT(calls.call_datetime, "%Y-%m-%d") as `groupdate` from calls WHERE calls.job_id =1 group by DATE_FORMAT(calls.call_datetime, "%Y-%m-%d") 返回: 分组日期 2018-07-06 2018-07-06 有两排。如何对上述查询进行计数,使结果变为一行的“2” 我想要的是: 结果 二, 谢谢,请帮我试试: S

我有一个疑问:

Select
  DATE_FORMAT(calls.call_datetime, "%Y-%m-%d") as `groupdate`
from
  calls
WHERE calls.job_id =1
group by DATE_FORMAT(calls.call_datetime,
"%Y-%m-%d")
返回:

分组日期

2018-07-06

2018-07-06

有两排。如何对上述查询进行计数,使结果变为一行的“2”

我想要的是:

结果

二,

谢谢,请帮我试试:

Select
  Count(DATE_FORMAT(calls.call_datetime, "%Y-%m-%d")) as `groupdate`
from
  calls
WHERE calls.job_id =1
group by DATE_FORMAT(calls.call_datetime,
"%Y-%m-%d")
您应该使用count()


最简单的方法是使用

Select
  COUNT(*) as Result
from
  calls
WHERE calls.job_id =1
group by DATE_FORMAT(calls.call_datetime, "%Y-%m-%d")
或者是一个交付表方法

SELECT
 COUNT(*) as Result
FROM (
  Select
    DATE_FORMAT(calls.call_datetime, "%Y-%m-%d") as `groupdate`
  from
    calls
  WHERE calls.job_id =1 
  group by DATE_FORMAT(calls.call_datetime, "%Y-%m-%d")
) AS a

两个查询应返回您想要的相同预期结果。

问题不明确。因为一个日期有两行,所以期望的答案是“2”吗?如果有多个约会呢

SELECT COUNT(*) FROM calls WHERE ...; -- delivers "2"

SELECT COUNT(*) FROM calls WHERE ...; GROUP BY DATE(datetime) -- also delivers "2"

SELECT COUNT(DISTINCT DATE(call_datetime)) FROM calls WHERE ...; -- delivers "1"

可能重复@Alexander-不,这不是同一个问题。没错,这个问题的第二个最佳答案对这个问题来说是正确的,但对那个问题来说是错误的。
SELECT COUNT(*) FROM calls WHERE ...; -- delivers "2"

SELECT COUNT(*) FROM calls WHERE ...; GROUP BY DATE(datetime) -- also delivers "2"

SELECT COUNT(DISTINCT DATE(call_datetime)) FROM calls WHERE ...; -- delivers "1"