序
Mysql 8.0之前是不支持 partition by 语法的。但有类似的解决方案。我们先通过一个实例来说明。
实例
**1:**下图所示,一个零件编号有多个价格。需要筛选出 零件最新的价格。 (需要找出 PRICE_VALID_FROM最近的那条数据)。
2:
SQL语句
SELECT MATERIAL, VENDOR_NAME_ZH,
SUBSTRING_INDEX( GROUP_CONCAT(NET_PRICE order by PRICE_VAILD_FROM desc) ,',',1) NET_PRICE
from t_swcas_db_part
where MATERIAL like '100000035-002%'and
IS_ENABLE='1'
and PRICE_VAILD_FROM <= SYSDATE() and PRICE_VAILD_TO >= SYSDATE()
group by MATERIAL, VENDOR_NAME_ZH
order by material limit 10
关键
SUBSTRING_INDEX( GROUP_CONCAT(NET_PRICE order by PRICE_VAILD_FROM desc) ,',',1) NET_PRICE
这段代码分成两步部分
1:GROUP_CONCAT(NET_PRICE order by PRICE_VAILD_FROM desc)
根据 PRICE_VAILD_FROM 字段倒序排序后,把 NET_PRICE 通过“,”分隔开输出。
2:SUBSTRING_INDEX
字符串截取第一个值。
下面把过程也输出来,一目了然
ps
:我这里因为只需要获取价格,所以只输出价格,如果需要获取整行数据的话,可以获取ID,后续再根据ID去关联。
版权声明:本文为richyliu44原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。