MySQL来自同一个表的子SELECT

对于这个问题,这是过于简单的,但假设我有一个包含以下列的INVENTORY表:SKU,DATE,QUANTITY.我想选择前一天的QUANTITY小于任何一天的QUANTITY的所有列.如何在同一个表上用子SELECT编写SELECT查询?

或者,如果有人知道该怎么称呼这种查询,那么我可以自己做更多的研究,这会有所帮助. (即,这是一个递归查询吗?)

最佳答案 我认为这对你来说是一个好的开始(如果我理解你的架构正确).

在英语中,这将选择所有SKU,其数量昨天小于同一SKU所有前几天的最小数量.

SELECT 
    SKU, 
    Quantity

FROM 
    INVENTORY inv

WHERE
    inv.DATE = GETDATE() - 1
    AND inv.QUANTITY < (SELECT MIN(prev_inv.QUANTITY) 
                        FROM INVENTORY prev_inv
                        WHERE 
                            prev_inv.DATE < GETDATE() - 1 
                            AND prev_inv.SKU = inv.SKU
                       )
点赞