2016-10-22 65 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'条款需要删除 –