在SQL中更新表,使用多个字段的WHERE子句

3

你好,我想要更新我的tblrestocklog表格,更新的内容是最小的stockno和相应的productno

这是我的样例表格:

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

现在我想使用最小的库存号1017123003更新产品25370。

我尝试了这个查询和其他方法,但总是出现错误信息。

UPDATE tblrestocklog 
    SET quantity = 20
    WHERE MIN(stockno) AND productno = 25370;
3个回答

2

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

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

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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接