0

我有两张桌子。

一种是 SUPPLIER,以 SupplierID 作为其 PK,它具有 State 属性。

另一个是 SUPPLIEDPART。它有一个 UnitCost 属性。SupplierID 是一个外键。

我正在尝试根据供应商是否位于德克萨斯州来更新 UnitCost。我尝试了多个查询,但它们总是失败。以下是一些最新的尝试。任何帮助,将不胜感激。如果有帮助,我附上了两张表之间关系的图片。

INSERT INTO SUPPLIEDPART (UnitCost)
  SELECT UnitCost * 1.1
  FROM SUPPLIEDPART SP INNER JOIN SUPPLIER S
  ON SP.SupplierID = S.SupplierID
  WHERE State = 'TX';

----这导致“无法将空值插入 brewer34.suppliedpart.supplierid

UPDATE SUPPLIEDPART
  SET UnitCost = UnitCost * 1.1
  WHERE SupplierID = (SELECT SupplierID
                     FROM SUPPLIER
                     WHERE State = 'TX')
  GROUP BY PartNumber;

----此查询导致命令未正确结束----

在此处输入图像描述

4

2 回答 2

1

我认为你很接近:

UPDATE SUPPLIEDPART
SET UnitCost = UnitCost * 1.1
WHERE SupplierID IN (SELECT SupplierID    -- <-- IN instead of =
                 FROM SUPPLIER
                 WHERE State = 'TX')
-- no GROUP BY
于 2013-10-29T19:48:18.880 回答
0

在大多数 DBMS 上,您可以执行以下操作:

UPDATE SUPPLIEDPART AS a
INNER JOIN SUPPLIER AS b ON a.SupplierID = b.SupplierID
SET a.UnitCost = a.UnitCost * 1.1
WHERE  b.State = 'TX';
于 2013-10-29T19:51:35.843 回答