有像這樣的結構後,HAVING:選擇行與給定日期
+----+------------+--------+-----------+
| id | date | userid | status |
+----+------------+--------+-----------+
| 1 | 2013-06-05 | 1 | validated |
| 2 | 2013-06-05 | 2 | validated |
| 3 | 2013-06-06 | 2 | pending |
| 4 | 2013-06-07 | 1 | validated |
| 5 | 2013-06-08 | 1 | validated |
| 6 | 2013-06-08 | 1 | validated |
| 7 | 2013-06-09 | 1 | validated |
+----+------------+--------+-----------+
如果我要選擇具有5種驗證狀態的用戶,我可以這樣做:
SELECT userid, COUNT(status) as valid
FROM table1
WHERE status="validated"
GROUP BY userid
HAVING valid=5
現在我想要增加此查詢的複雜性,我想選擇具有從給定日期開始的5個驗證行的用戶:
SELECT userid, COUNT(status) as valid
FROM ladder_offers_actions
WHERE status="validated"
AND date > "2013-06-06"
GROUP BY userid
HAVING valid=5
這當然會返回上面給出的例子的0個用戶,這是因爲它只在2013-06-06(4)之後查看驗證的條目。
我要選擇的用戶,只有有一個給定的日期後5項驗證...例如:
用戶1 2013年6月6日之前確認行和 2013年以後生效的行-06-06 - 該用戶應包含在select
用戶2具有 2013年6月6日之前驗證行和驗證一行之後2013年6月6日 - 這個用戶應該是包含在select中
用戶3在2013-06-06之前有5個驗證行 - 此用戶不應該包含在select中。
用戶4在2013-06-06之後有5個經過驗證的行 - 此用戶應該包含在select中的。
希望這足夠清楚,本質上我只希望那些在特定日期後有5個驗證行的用戶,但如果用戶還沒有5個驗證行,那麼在該日期之前包含行。
你說的是什麼,你想用5行驗證,其中至少有一個是給定的日期後的用戶? – Matt
只是在表上自己的條件 – Strawberry