2016-10-22 61 views
3

嗨,我想更新我的tblrestocklog與最低stockno及其相應的productnoSQL中的更新表,WHERE子句多個字段

這裏是我的示例表:

StockNo  ProductNo Quantity PurchasedDate ExpirationDate 
1017123002 25373   10   2016-10-22 2017-02-10 
1017123003 25370   10   2016-10-22 2018-11-21 
1017123006 25370   10   2016-10-22 2018-03-30 
1017123005 25370   10   2016-10-22 2018-04-22 

現在我想更新產品25370用最小的股票數量是1017123003.

我嘗試這個查詢和其他的東西,但它總是給我一個錯誤味精..

UPDATE tblrestocklog 
    SET quantity = 20 
    WHERE MIN(stockno) AND productno = 25370; 

回答

2

您可以在update語句中使用order bylimit

UPDATE tblrestocklog 
    SET quantity = 20 
    WHERE productno = 25370 
    ORDER BY stockno ASC 
    LIMIT 1; 
+0

謝啦!非常有幫助和容易:) –

1

這裏是另一種方法

UPDATE tblrestocklog A 
     JOIN (SELECT Min(stockno) min_stockno, 
        productno 
      FROM tblrestocklog p 
      GROUP BY productno) B 
     ON A.productno = B.productno 
      AND A.stockno = B.min_stockno 
SET quantity = 20 
WHERE productno = 25370 

您可以從where條款刪除productno過濾器來遵循這種邏輯對所有productno

0

嘗試以下查詢:

UPDATE tblrestocklog 
SET quantity = 20 
WHERE productno = 25370 
AND stockno IN (SELECT MIN(stockno)) 
+0

它的工作,但'FROM'條款需要刪除 –