sql数据库多表查询排序过滤

sql数据库多表查询排序过滤

例:某商品在数据库中有多种促销方式,普通方式模糊搜索会带出该商品的多种促销, 因此需要对商品按照促销的优先级进行处理。

方法一:

第一次操作是将商品查出,然后将商品循环,放入数据库作对比进行查询
在这里插入图片描述

处理的mapper如下:(按照需求将*号更换)
在这里插入图片描述
经过这样的处理后,可以实现上述要求 。

方法二:

依然是先查出商品,然后查出所有促销方式,通过**steam()**方法进行过滤,一样可以实现该要求。因为懒得动所以没做。

方法三:

我想要一个sql语句得出结果。方法如下:

在这里插入图片描述
这里使用的是mybatis-plus和Lambda表达式,如果不熟悉也可以换成mybatis也没什么问题。
解释一下:我需要查询所有商品,其中的条件是,当我查询到该商品时,该商品下的所有促销中取优先级最高的,及MAX(优先级)
sql语句如下:


SELECT  * FROM  TPRCPRICEPRJBODY TP 
 LEFT JOIN TPRCPRICEPRJ tj on tj.PRICEPRJCODE = tp.PRICEPRJCODE 
 LEFT JOIN VCOBPLU VC ON VC.PluId = TP.PLUID 
 where tj.prjtype in 
     ( SELECT MAX(TPJ.PRJTYPE) FROM TPRCPRICEPRJBODY TPR 
       LEFT JOIN  TPRCPRICEPRJ TPJ ON TPR.PRICEPRJCODE = TPJ.PRICEPRJCODE 
       WHERE TPR.PLUID = TP.PLUID)
注:

促销明细:TPRCPRICEPRJBODY
促销主表:TPRCPRICEPRJ
商品表: VCOBPLU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vace cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值