如何在MySQL Workbench中查询filler类型订单的最大日期完整行数据
解决方案
要获取订单类型为filler且invoice_date最大的完整行数据,你可以用以下几种方法:
方法一:子查询匹配最大日期
这种方法能返回所有拥有该最大日期的行(如果存在多条的话):
SELECT * FROM invoice_data WHERE order_type = "filler" AND invoice_date = ( SELECT MAX(invoice_date) FROM invoice_data WHERE order_type = "filler" );
方法二:排序后取首行(适合单条最大日期的场景)
如果确定只有一行是最新日期,用这种方法更简洁:
SELECT * FROM invoice_data WHERE order_type = "filler" ORDER BY invoice_date DESC LIMIT 1;
注意:如果有多个行的invoice_date等于最大值,该方法只会返回其中一行。
方法三:窗口函数(MySQL 8.0+支持)
适合需要保留所有最大日期行,且不想重复写筛选条件的场景:
SELECT * FROM ( SELECT *, RANK() OVER (ORDER BY invoice_date DESC) AS rnk FROM invoice_data WHERE order_type = "filler" ) t WHERE rnk = 1;
这里用RANK()函数给行按日期倒序排名,排名为1的就是所有最大日期的行。
内容的提问来源于stack exchange,提问作者Draknoir
相关产品推荐
相关产品推荐

