如果某个特定记录不可用,那么我需要在MYSQL查询中显示为零

如果某个特定记录不可用,那么我需要在MYSQL查询中显示为零,mysql,database,Mysql,Database,输出为: SELECT DATE(login) AS loginDate, COALESCE(COUNT(login),0) AS loginCount FROM LMS_LoginTracking WHERE prism_mem_id = 55308 AND DATE(login) BETWEEN '2017-01-04T18:30:00.000Z' AND '2017-01-09T18:30:00.000Z' GROUP BY DATE(login) 在这里,我所期

输出为:

SELECT DATE(login) AS loginDate, COALESCE(COUNT(login),0) AS loginCount    
  FROM LMS_LoginTracking 
 WHERE prism_mem_id = 55308
   AND DATE(login) BETWEEN '2017-01-04T18:30:00.000Z' AND '2017-01-09T18:30:00.000Z'
 GROUP BY DATE(login)
在这里,我所期望的是2017-01-07应该是0,因为该日期在数据中不可用,即使我需要该特定日期的结果为0结果

所需输出:

LoginDate     LoginCount
2017-01-05     406
2017-01-06     558
2017-01-08      11
2017-01-09     406

请在这方面帮助我。

有很多不同的方法可以实现这一点。我所知道的最简单的方法是创建一个存储感兴趣日期的表。然后用相关数据填充它。我们称之为工作日吧

LoginDate     LoginCount
2017-01-05     406
2017-01-06     558
2017-01-07       0
2017-01-08      11
2017-01-09     406
然后你可以使用左连接,如下所示

CREATE TABLE work_days(
    work_day date NOT NULL PRIMARY KEY
);

您尚未发布表格,因此无法在此进行测试。因此,此查询可能无法以其确切形式工作。请根据需要进行编辑

您好,我无法在数据库中再创建一个表,您能否为我提供另一种方法。您的意思是您没有创建表的权限?那个么你们当然可以创建一个临时表了?我有创建表的权限,因为我需要避免它,因为它是活动站点。如果不创建表格,我们就无法实现这一目标。如果这是非常需要的,那么我们需要在新表中创建相同的列名吗?“一个实时站点”-所以有某种表示层?
SELECT date(login) as loginDate, COALESCE(count(login),0) as loginCount 
FROM work_dates LEFT JOIN LMS_LoginTracking
ON work_dates.work_day = date(LMS_LoginTracking.login) /* edit as appropriate */
WHERE prism_mem_id=55308 AND DATE(login) BETWEEN '2017-01-04T18:30:00.000Z' AND '2017-01-09T18:30:00.000Z' group by date(login)