Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查询以获取最近日期的记录_Java_Mysql_Sql - Fatal编程技术网

Java 查询以获取最近日期的记录

Java 查询以获取最近日期的记录,java,mysql,sql,Java,Mysql,Sql,我想根据最近的日期从数据库中获取记录。 我在下面写了一个查询,该查询不起作用并显示错误: 11:55:05从mb_orderhistory中选择firstName和lastName,其中 eventType=provided\u ITEM\u EDIT and orderId=80822和 MaxUpdateDate按医嘱ID分组错误代码:1111。无效使用 组功能0.015秒 这就是我写的问题 select firstName,lastName from mb_orderhistory whe

我想根据最近的日期从数据库中获取记录。 我在下面写了一个查询,该查询不起作用并显示错误:

11:55:05从mb_orderhistory中选择firstName和lastName,其中 eventType=provided\u ITEM\u EDIT and orderId=80822和 MaxUpdateDate按医嘱ID分组错误代码:1111。无效使用 组功能0.015秒

这就是我写的问题

select firstName,lastName from mb_orderhistory where eventType="PROPOSED_ITEM_EDIT" and 
                orderId=80822 and MAX(updatedDate) GROUP BY orderId; 

在SQL Server中,您可以使用order by,如选择top 1 firstname、lastname,其中order by updateddate desc可以尝试:

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)

不能在WHERE子句中使用聚合aka group函数(如MAX)。这是因为WHERE子句是针对每个可能的行计算的,而聚合函数的值是在您看到所有匹配行之后才定义的

请参阅MySQL,具体如下:

在WHERE表达式中,可以使用MySQL支持的任何函数和运算符,聚合摘要函数除外

相反,您应该按照updateDate按降序排序,以便输出的第一行是最大的,并使用LIMIT仅获取一行:

SELECT ... WHERE orderId=80822 ... ORDER BY updatedDate DESC LIMIT 1
如果列orderId=80822上还有相等谓词,则列上的GROUP BY就没有多大意义。谓词意味着您将只有一个组,并且您将知道它的值:在本例中为80822。GROUP BY的全部目的是识别组;如果你已经了解这个小组,你就不需要它了

Select firstName,lastName 
From mb_orderhistory 
where eventType="PROPOSED_ITEM_EDIT" 
   and orderId=80822 
   and updatedDate = (SELECT MAX(updatedDate) FROM mb_orderhistory)
GROUP BY orderId; 

这可能对你有帮助!Tx.

您用于UpdateDate的数据类型是什么@Akashdatatype是“日期”,您可以尝试使用ORDER BY和LIMIT。另一个选择是在SELECT子句中使用MAX编写子查询。检查我的答案。这可能对你有帮助@明石没有使用命令,我也得到了同样的错误。你能给我一些例子如何使用MAX和SELECT吗?从mb\u orderhistory中选择firstName,lastName,其中UpdateDate在从mb\u orderhistory中选择MaxUpdateDate,其中orderId=80822,eventType=PROPOSED\u ITEM\u EDIT;对我来说,使用这样的子选择很好,但效率可能会降低。尽管读取解释的输出并不容易,但您可以使用EXPLAIN尝试并确定是否是。请从mb\u orderhistory中选择firstName、lastName,其中eventType=PROPOSED\u ITEM\u EDIT和orderId=80822 ORDER BY UPDATE DESC LIMIT 1;它工作得很好