您可以使用变量来获取感兴趣的行,以及更新记录所需的信息:
SELECT *
FROM (
SELECT `Qty in acquisto`,
`Prezzo in acquisto`,
@take := least(`Qty in acquisto`, @needed) as taken,
`Qty in acquisto` - @take as adjusted_acquisto,
@needed := @needed - @take as still_needed
FROM book,
(select @needed := 5) as init
ORDER BY `Prezzo in acquisto` DESC) base
WHERE taken + still_needed > 0
样本数据的输出为:
| Qty in acquisto | Prezzo in acquisto | taken | adjusted_acquisto | still_needed |
|-----------------|--------------------|-------|-------------------|--------------|
| 2 | 1000 | 2 | 0 | 3 |
| 10 | 960 | 3 | 7 | 0 |
参见SQL小提琴
在最里面的查询中,使用别名init,您传递所需的书本数量(示例中为5)。
因此,在列中,adjusted_acquisto
您可以找到执行删除和更新所需的值:
如果该值为0,则删除相应的记录。
如果该值不为0,则用该值更新数量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句