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