我有一个疑问,我得到了帮助,但我陷入了另一个困境。
我的代码是
SELECT a.name, COUNT(*) AS num FROM table2 b
INNER JOIN table1 a
ON b.status_id=a.id
GROUP BY status_id
我现在想做的只是显示在当前日期输入的结果?日期列在表2中。日期列的格式是日期和时间(例如1341241153),由CRM 以这种方式自动设置。我不确定这是什么格式!
我只需要检查日期是否与当前日期匹配。我希望这是清楚的。
这是一个 MySQL 数据库。
任何帮助将不胜感激!
使用此解决方案:
SELECT a.name, COUNT(*) AS num
FROM table2 b
INNER JOIN table1 a ON b.status_id = a.id
WHERE b.datecol >= UNIX_TIMESTAMP(CURDATE()) AND
b.datecol < UNIX_TIMESTAMP(CURDATE() + INTERVAL 1 DAY)
GROUP BY b.status_id
这将避免将日期列包装在函数内,这会使查询不可控制(即无法使用索引)。通过在裸日期列上进行比较,MySQL 仍然能够利用索引(如果您在日期列上设置了索引),并且它应该非常高效。
如果您可以进一步简化它绝对知道输入的日期永远不能是将来的某个时间(即明天或后天):
SELECT a.name, COUNT(*) AS num
FROM table2 b
INNER JOIN table1 a ON b.status_id = a.id
WHERE b.datecol >= UNIX_TIMESTAMP(CURDATE())
GROUP BY b.status_id
第二个条件检查被删除,因为它不需要检查是否在未来的一天。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)