MYSQL-希望遍历位于一个表中的日期,并计算另一个表中的记录数

MYSQL-希望遍历位于一个表中的日期,并计算另一个表中的记录数,mysql,date,loops,count,between,Mysql,Date,Loops,Count,Between,我有两张桌子。DateTable是只包含日期的表。RecordTable是一个具有4000万条唯一记录的表 在RecordTable中,每条记录都有一个StartDate和一个EndDate 我想遍历DateTable,并计算RecordTable中的多少条记录,其中来自DateTable的日期介于StartDate和EndDate之间 示例-DateTable有以下2条记录: 2014-07-27 2014-07-28 我首先想知道RecordTable中2014-07-27介于StartDa

我有两张桌子。DateTable是只包含日期的表。RecordTable是一个具有4000万条唯一记录的表

在RecordTable中,每条记录都有一个StartDate和一个EndDate

我想遍历DateTable,并计算RecordTable中的多少条记录,其中来自DateTable的日期介于StartDate和EndDate之间

示例-DateTable有以下2条记录: 2014-07-27 2014-07-28

我首先想知道RecordTable中2014-07-27介于StartDate和EndDate之间的记录数

然后,我希望下一行显示RecordTable中2014-07-28介于StartDate和EndDate之间的记录数


这是环路吗?或者它们是查询中的一种方式?

这是两个独立的查询。你对两者都有正确的想法。
您必须单独运行数据集,然后在浏览器端使用您想要的任何东西来显示结果。

如果我正确理解您的问题,您可以将DateTable连接到RecordTable,然后只需进行计数

SELECT DateTable.TheDate, COUNT(*)
INNER JOIN RecordTable ON
  DateTable.TheDate BETWEEN RecordTable.StartDate AND RecordTable.EndDate
GROUP BY DateTable.TheDate
请注意,这将忽略任何在RecordTable中不匹配的日期表行

如果要在DateTable中的日期与RecordTable中的任何行不匹配时显示零计数,则需要基于RecordTable列值进行左联接和计数,这很难解释,但这是基于计数忽略空值的事实:

SELECT DateTable.TheDate, COUNT(RecordTable.StartDate)
LEFT JOIN RecordTable ON
  DateTable.TheDate BETWEEN RecordTable.StartDate AND RecordTable.EndDate
GROUP BY DateTable.TheDate

这是行不通的。说我的语法错了。特定语法为SELECT activedates.activedates,count*activedates上的内部联接作业。作业之间的activedates.created和作业。最后检查组按activedates.activedates