mysql partition by的实现

  • Post author:
  • Post category:mysql





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 版权协议,转载请附上原文出处链接和本声明。