多列主键的最小值

时间:2018-05-06 19:20:10

标签: mysql mysql-5.7

我有三张这样的表

move列(sales_billidtimeuser_id

branch_id列(salesidbill_idquantity

item_id列(sales_plussales_idstatustimebranch_id

其中sales_plus.status为枚举('add','remove'),原始帐单完成后可添加或删除一个项目,此表主键为sales_id和status

我需要选择具有特定bill_id的销售,但如果该项目已添加到帐单中,则只显示已删除的时间,branch_id和user_id

这是我能做的最好但是由于使用了ANY_VALUE,它可以返回添加的时间但是已删除状态

user_id

1 个答案:

答案 0 :(得分:1)

我不是100%确定你的目标是什么,但看起来你正在寻找只有“最低”状态的销售。如果是这样,此查询应该完成这项工作:

select * 
  from 
   sales_bill, sales, sales_plus 
  where 
    bill_id = 0 and 
    sales_bill.id = sales.bill_id and 
    sales.id = sales_plus.sales_id and 
    sales_plus.status = (
       select sp.status from sales_plus as sp where sp.sales_id = sales.id order by status limit 1
    );

这是小提琴:http://sqlfiddle.com/#!9/37b488/2/0