我有一個事件表,每個都有負責人。這些事件每天可能有多個,但我需要在給定日期爲每個用戶提供第一個的查詢記錄。MySQL:在給定的日子裏獲取用戶的最低記錄
舉例來說,如果我有事件如下表:
+----------+-------------+---------------------+
| event_id | director_id | event_start |
+----------+-------------+---------------------+
| 1 | 111 | 2015-04-27 10:00:00 |
+----------+-------------+---------------------+
| 2 | 222 | 2015-04-27 11:00:00 |
+----------+-------------+---------------------+
| 3 | 333 | 2015-04-27 12:00:00 |
+----------+-------------+---------------------+
| 4 | 111 | 2015-04-27 13:00:00 |
+----------+-------------+---------------------+
| 5 | 222 | 2015-04-27 09:00:00 |
+----------+-------------+---------------------+
我想下面返回:
+----------+-------------+---------------------+
| event_id | director_id | event_start |
+----------+-------------+---------------------+
| 1 | 111 | 2015-04-27 10:00:00 |
+----------+-------------+---------------------+
| 5 | 222 | 2015-04-27 09:00:00 |
+----------+-------------+---------------------+
| 3 | 333 | 2015-04-27 12:00:00 |
+----------+-------------+---------------------+
我覺得像下面這樣的查詢會工作,但它事實證明,MySQL在WHERE
子句(simple SQL query giving Invalid use of group function)中不支持MIN
:
SELECT
event_id, director_id, MIN(event_start) AS event_start
FROM events
WHERE MIN(event_start) >= '2015-04-27 00:00:00'
AND MIN(event_start) < '2015-04-28 00:00:00'
GROUP BY director_id;
我該如何以最有效的方式做到這一點?我的events
表格可能很容易擁有10,000-100,000條記錄。
爲什麼不使用'WHERE event_start ='2015-04-27 00:00:00''?因爲'value> = 1 AND value <2'導致'value = 1'!? – C4u
請點擊此鏈接: http://stackoverflow.com/questions/17938384/mysql-min-in-where-clause – Sagar
@ C4ud3x事件可以在任何時候開始。第一個不確定從午夜開始。 – Bing