2
我嘗試做一個簡單的查詢來從數據庫中進行選擇,並只選擇適合陳述大於12個月的行。如何不選擇條件?
表像(指明MyDate實際上是一個時間字段):
+----+---------+-------------+
| id | account | mydate |
+----+---------+-------------+
| 1 | 1 | last week | <-- this should disqualify account 1
| 2 | 1 | 2 years ago |
| 3 | 1 | 3 years ago |
| 4 | 2 | 2 years ago |
+----+---------+-------------+
這是我的查詢現在:
SELECT id, account, MAX(mydate)
FROM awesomeTable
WHERE
mydate < SUBDATE(CURDATE(), INTERVAL 12 MONTH)
GROUP BY account
看上去不錯。但結果如下:
+----+---------+-------------+
| id | account | mydate |
+----+---------+-------------+
| 2 | 1 | 2 years ago | <-- SQL doesnt understand me :(
| 4 | 2 | 2 years ago |
+----+---------+-------------+
但我不想讓帳戶2顯示出來。我真的只想看看mydate大於2年的帳戶。
現在使用該查詢,它不顯示ID 1,因爲這不符合WHERE子句中的條件。但它會向我展示其他行的最新可能mydate。
我想獲取所有帳戶的列表,其中的所有帳戶都大於1年。我怎麼能做到這一點?
我無法使腳本正常工作,但看起來正確。 ''你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第4行使用'GROUP BY帳戶限制0,100000'附近的正確語法SQL.sql「' - mySQL服務器是版本5.5。 – Trollwut 2015-02-09 15:24:06
對不起,GROUP BY在HAVING之前。 – Barmar 2015-02-09 16:23:41
而且 - 魔法 - 它的工作原理!也沒有見過。謝謝你的回答,幫了我很多! – Trollwut 2015-02-09 17:00:33