這裏是我的表差事:
user_id | date | hour | done
1 | 2016-01-01 | 08:00 | 08:03:07
1 | 2016-01-01 | 09:00 | 09:05:07
2 | 2016-01-01 | 11:00 | 11:07:05
2 | 2016-01-01 | 11:10 | 11:18:01
3 | 2016-01-01 | 9:00 | null
3 | 2016-01-01 | 10:00 | null
3 | 2016-01-01 | 10:05 | null
我想每個用戶的最後使命:
user_id | date | hour | done
1 | 2016-01-01 | 09:00 | 09:05:07
2 | 2016-01-01 | 11:10 | 11:18:05
3 | 2016-01-01 | 10:05 | null
所以我有使用GROUP BY like和它的工作原理:
SELECT user_id, MAX(done) done FROM errand WHERE done = '2016-06-01' GROUP BY user_id;
它顯示我:
user_id | done
1 | 09:05:07
2 | 11:18:05
3 | null
但是,問題是,我不能在SELECT將它顯示時間和日期,因爲我得到這個(錯誤代碼:1055#表達SELECT列表的1不在GROUP BY子句中,並且包含非聚集列......它在功能上不依賴於GROUP BY子句中的列;這與sql_mode = only_full_group_by不兼容)。
所以,我想這一點:
SELECT * FROM errand e JOIN (
SELECT user_id u, MAX(done) d
FROM errand WHERE date = '2016-06-01'
GROUP BY user_id
) x on x.a = e.user_id AND x.b = e.done;
但它只能說明我在哪裏,做行不爲空:
user_id | date | hour | done
1 | 2016-01-01 | 09:00 | 09:05:07
2 | 2016-01-01 | 11:10 | 11:18:05
我該怎麼做才能讓地方做的第三個用戶爲空?
我倒是店裏的日期和時間爲一個單一的實體。我會把'done'存儲爲TIMESTAMP。 – Strawberry