MySql连表查询,一对多,按照条件取一对一

现在有一个需求,就是在原有商品参数的基础上,增加一个用户的支付状态。

然而用户的支付状态在订单表里面,而且老版本的数据当中,一个人存在多个订单。

也就是说,一个商品可能同时对应支付和未支付两个支付状态,如果用户支付了,当然只能已支付的状态

so...

SELECT 
ins.total_score,pay.pay_status,DATE_FORMAT(ins.inspect_date,'%Y-%m-%d %H:%i:%s')
FROM ins_base ins
INNER JOIN (

SELECT MAX(pay_status) pay_status,inspect_code inspect_code
FROM indent
GROUP BY inspect_code

) pay
ON ins.report_code = pay.inspect_code
WHERE ins.customer_id = 196
ORDER BY ins.inspect_date DESC
LIMIT 0,2

ins_base(商品表)、indent(订单表)

我在商品表与订单表连表的同时,对订单表进行了子查询处理,因为在这个业务里规定,未支付为1,支付为2。

所以我对订单表进行了分组,同时对需要的支付状态字段(pay_status)取最大值。

如上...

你可能感兴趣的:(MySql)