【问题标题】:SQL Update values in table A with multiple values from table BSQL 使用表 B 中的多个值更新表 A 中的值
【发布时间】:2013-10-01 23:11:20
【问题描述】:

我正在尝试根据产品代码使用表 B 中的价格更新表 A 中的产品价格。

表 A 中大约有 50,000 种产品,但表 B 中只有 200 种。 所以我希望表 B 中的这 200 个价格通过匹配两个表中的产品代码来替换表 A 中这些产品的价格。

谁能告诉我如何去做?

【问题讨论】:

  • 你的数据库是哪个? Sql server、oracle、MySql等
  • 你有没有尝试过?
  • 我的数据库在 sql server 上。我试图从网站上获取一些参考资料并将我的 sql 语句编辑为这个。 UPDATE dbo.Shelflabel_Pricechange_Master SET [Unit Price] = (SELECT t2.[Unit Price] FROM dbo.shelflabel_pricechange t2 WHERE dbo.Shelflabel_Pricechange_Master.Plu = t2.PLU) WHERE EXISTS (SELECT 1 FROM dbo.shelflabel_pricechange t2 WHERE dbo.Shelflabel_Pricechange_Master.Plu = t2.PLU)

标签: sql matching


【解决方案1】:

您可以对 MS Sql 服务器使用内连接更新(参考:Update a table using JOIN in SQL Server?)。请尝试以下查询:

UPDATE 
 TableA
SET TableA.Price = TableB.Price
FROM 
 TableA, TableB
WHERE 
 TableA.ProductCode = TableB.ProductCode

【讨论】:

  • 使用显式连接语法而不是旧的 FROM Table,Table 不是更可取吗?我赞成@Nadeem_MK 答案的唯一原因。
【解决方案2】:
UPDATE  TableA
SET     TableA.ProductPrice= TableB.price
FROM    TableA
INNER JOIN  TableB
ON  TableA.productCode = TableB.productCode

【讨论】:

    【解决方案3】:

    在 mysql 中试试这个命令

    update A t
    set cost=(select cost from B where id=t.id)
    where t.id in (select id from B)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多