我不想将它们组合或分组。我只想计算给定表中有多少日期(不是小时/分钟/秒)匹配,然后使用php突出显示简单日历上的给定日期。 (因此突出显示有两个以上条目的日子。)
我无法弄清楚这句话。这是我尝试过的一个例子。我拉了一些行,但它不是100%。
SELECT *
FROM `foo_table`
WHERE DAY(`start`) IN
(
SELECT DAY(`start`)
FROM `foo_table`
WHERE MONTH(`start`) IN (01)
AND MONTH(`end`) IN (01)
GROUP BY `start`
HAVING COUNT(*) > 1
)
ORDER BY `start`
这是表格:
id start end
1 2014-01-01 10:00:00 2014-01-02 10:00:00
2 2014-01-02 10:00:00 2014-01-04 10:00:00
3 2014-01-03 10:00:00 2014-01-06 10:00:00
4 2014-02-01 10:00:00 2014-02-02 10:00:00
5 2014-02-01 10:00:00 2014-02-02 10:00:00
6 2014-10-01 10:00:00 2014-10-19 10:00:00
我希望语句显示以查询: 1月3日独特的条目。 2月2日匹配的条目。 等等。
当给定的一天有一个,两个或三个条目时,我使用php来更改日历的字体。我似乎无法弄清楚如何找出条目数量以及哪些日期。
答案 0 :(得分:0)
如果我正确理解你,那么这样的事情对你有用:
SELECT DAY(`start`), COUNT(*)
FROM foo_table
WHERE DATE_FORMAT(`start`, "%Y-%m") = '2014-03'
GROUP BY 1;
这会返回类似于:
的内容+-----------+----------+
| 1 | 266 |
| 2 | 260 |
| 3 | 304 |
| 4 | 298 |
| 5 | 251 |
| 6 | 293 |
| 7 | 310 |
| 8 | 243 |
| 9 | 248 |
| 10 | 288 |
| 11 | 290 |
| 12 | 245 |
| 13 | 315 |
| 14 | 333 |
| 15 | 298 |
| 16 | 268 |
| 17 | 282 |
| 18 | 245 |
| 19 | 252 |
| 20 | 293 |
| 21 | 63 |
+-----------+----------+
答案 1 :(得分:0)
您的子查询需要按date(start)
分组:
SELECT *
FROM `foo_table`
WHERE DATE(`start`) IN (SELECT DATE(`start`)
FROM `foo_table`
WHERE MONTH(`start`) IN (01) AND MONTH(`end`) IN (01)
GROUP BY DATE(`start`)
--------------------------------^
HAVING COUNT(*) > 1
)
ORDER BY `start`;
但是,从您的描述中可以看出,子查询的输出似乎已足够,因为它可以识别具有多个条目的日期。