我想根据最近的日期(最新日期)从DB获取记录。 我在下面写了一个查询,但是没有工作并显示错误:
11:55:05从mb_orderhistory中选择firstName,lastName EVENTTYPE =" PROPOSED_ITEM_EDIT"和orderId = 80822和 MAX(updatedDate)GROUP BY orderId错误代码:1111。无效使用 组功能0.015秒
这是我写的查询。
select firstName,lastName from mb_orderhistory where eventType="PROPOSED_ITEM_EDIT" and
orderId=80822 and MAX(updatedDate) GROUP BY orderId;
答案 0 :(得分:1)
您不能在WHERE子句中使用聚合(又称组)函数(如MAX)。这是因为WHERE子句是针对每个可能的行进行评估的,而聚合函数的值仅在您看到所有匹配的行之后定义。
请参阅MySQL docs on SELECT syntax,具体来说:
在WHERE表达式中,您可以使用MySQL支持的任何函数和运算符,但聚合(汇总)函数除外。
相反,您应该按updateDate排序(按降序排列,以便输出的第一行是最大的),并使用LIMIT只获取一行:
SELECT ... WHERE orderId=80822 ... ORDER BY updatedDate DESC LIMIT 1
(如果你在该列上也有一个等式谓词(orderId=80822
),列上的GROUP BY没有多大意义。谓词意味着你只有一个组,而你#&# 39;知道它的价值:在这种情况下,80822. GROUP BY的整个目的是识别群体;如果你已经知道群体,你就不需要它。)
答案 1 :(得分:0)
在SQL Server中,您可以使用select top 1 firstname,lastname from <table_name> where <condition> order by updateddate desc
答案 2 :(得分:0)
你可以尝试:
select
firstName
,lastName
from mb_orderhistory
where eventType = "PROPOSED_ITEM_EDIT"
and orderId = 80822
and updateDate = (select max(updateDate) from mb_orderhistory where eventType = "PROPOSED_ITEM_EDIT" and orderId = 80822)