我有以下订单表:
| id | user_id | order_date |
| 1 | 5 | 24/03/2014 |
| 2 | 5 | 25/02/2014 |
| 3 | 6 | 25/06/2014 |
我想要一个查询,为我的每个用户返回最大order_date。在我的例子中,结果将是:
| id | user_id | order_date |
| 1 | 5 | 24/03/2014 |
| 3 | 6 | 25/06/2014 |
我尝试了以下查询:
select user_id, id, max(order_date)
from order
GROUP BY cmd_user_id;
但是这段代码会产生以下错误:column" order.id"必须出现在GROUP BY子句中或用于聚合函数。
我不知道该怎么做。有谁可以帮助我吗?
我觉得我需要一个小组,因为这是我的查询的开始。我想,之后添加一些额外条件来选择订单(例如,通过特定付款方式支付的订单以及过去10天,但我将始终对过去10天的最大日期感兴趣。)
非常感谢你的帮助。
答案 0 :(得分:0)
select user_id, id, max(order_date) from order GROUP BY cmd_user_id;
select和group by中的字段不匹配,但我认为user_id和cmd_user_id是相同的字段,这是一个错字。 无论如何,如果使用group by,则select部分中的字段必须具有聚合函数,如max(order_date),或者必须按cmd_user_id等字段包含在组中。 就像Kouber所说,从选择部分中删除id字段,在其上使用聚合函数或将其包含在group by字段中。