這過於簡單了這個問題的目的,但假設我有一個INVENTORY
表具有以下欄目:SKU
,DATE
,QUANTITY
。我想要選擇所有列中前一天的QUANTITY
小於QUANTITY
的任何一天。你如何在同一個表上寫一個SELECT
查詢和一個子SELECT
?MySQL的子選擇同一個表
或者,如果有人知道該怎麼稱呼這種查詢,那麼我可以對自己做更多的研究,這將有所幫助。 (即,這是一個遞歸查詢嗎?)
這過於簡單了這個問題的目的,但假設我有一個INVENTORY
表具有以下欄目:SKU
,DATE
,QUANTITY
。我想要選擇所有列中前一天的QUANTITY
小於QUANTITY
的任何一天。你如何在同一個表上寫一個SELECT
查詢和一個子SELECT
?MySQL的子選擇同一個表
或者,如果有人知道該怎麼稱呼這種查詢,那麼我可以對自己做更多的研究,這將有所幫助。 (即,這是一個遞歸查詢嗎?)
我認爲這對你來說是一個很好的開始(如果我正確理解你的模式)。
在英語中,這將選擇所有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
)
你可以加入一個表,以自己的這種事情。確切的語法可能不適合日期數學,如果你每天有多個記錄,你可能想要做一些分組,但是我希望你明白。
SELECT i1.*
FROM INVENTORY AS i1
JOIN INVENTORY AS i2 ON i2.DATE = i1.DATE + 1
WHERE i1.QUANTITY > i2.QUANTITY
結果集是空的,因爲數量不能低於最低一組的是一員...... –
@KeithRandall的 - 爲什麼不呢?如果我昨天賣掉零個電話,但在此之前的每一天都有10個電話,那麼這是他想要選擇的最小數量。 – BeemerGuy
@beemerGuy.net:我很迂腐,但是如果你一天售出10部手機,另一部手機是0,那麼任何一天*的最小數量爲0.我的評論有些玩笑,因爲OP打算說「前一天前的任何一天」,而不是「任何一天」(包括前一天)。 –