【问题标题】:How to do a Select and Update query on one SQL string?如何对一个 SQL 字符串进行选择和更新查询?
【发布时间】:2012-12-21 08:04:04
【问题描述】:

我想在我的 MySQL 数据库上做这样的事情。

SELECT * FROM itemsordered WHERE purchaseOrder_ID = '@purchaseorderID';

然后检索 itemsOrdered 数据库中的 stock_ID 以及已订购的商品数量。

string stockID = (dr["stock_ID"].ToString())
string restockQuantity = (dr["quantity"].ToString())

然后使用它们来补充库存数据库中的现有数量

UPDATE stocksdb SET quantity = @restockQuantity WHERE stock_ID = @stockID

有没有更简单的方法来做到这一点?

itemsordered 数据库列

itemsOrdered_ID purchaseORder_ID stock_ID quantity status datereceived

stocksdb 数据库列

stock_ID name onHandQuantity pricePerPiece dateUpdated

【问题讨论】:

    标签: c# sql select sql-update


    【解决方案1】:
    UPDATE stocksdb s
        INNER JOIN itemsordered i ON i.stock_ID = s.stock_ID
        SET quantity = i.quantity WHERE i.purchaseOrder_ID = '@purchaseorderID';
    

    【讨论】:

    • 我可以将 s.quantity 数据添加到 i.quantity 数据吗?像这样:SET s.quantity = (s.quantity+i.quantity) WHERE i.purchaseOrder_ID ='@purchaseOrder_ID'
    • 顺便说一句.. 这会更新来自i.quantity 的所有s.quantity。我的意思是,这会更新所有订购补货的库存吗?
    • 每个 itemsordered 行是否有多个 stockdb 行?还是反过来?
    • 先生,情况正好相反。 itemsordered 数据库将具有重复的 stock_ID 和 purchaseOrder_ID 值
    • 在这种情况下,是的,此查询将更新此采购订单修改的所有 stockdb 行。不过,您应该添加 (s.quantity+i.quantity) 部分。
    【解决方案2】:

    是的,还有更简单的方法。你可以UPDATEJOIN 像这样:

    UPDATE stocksdb s
    INNER JOIN itemsordered i ON s.stock_ID = i.stockID
    SET s.quantity = i.onHand
    WHERE i.purchaseOrder_ID = '@purchaseorderID';
    

    【讨论】:

    • 哦,不,抱歉,我不想做 Count(*)。我想将restockquantity的数量复制到stocksdb上的onHand数量
    • @JohnErnestGuadalupe - 很抱歉,您能发布两张表的结构吗?
    • 张贴了先生。上述 SQL 字符串是否会更新所有订购补货的库存?
    【解决方案3】:

    您可以在更新语句中进行内部联接。

    update stocksdb a inner join itemsordered b on a.stock_ID = b.stock_ID
    set a.quantity = b.quantity
    purchaseOrder_ID = '@purchaseorderID';
    

    sql 语句未经测试,但我想你明白了

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多