基于另一个 - SQL的一个表更新数据

时间:2013-10-29 19:42:34

标签: sql

我有两张桌子。

其中一个是SUPPLIER,其中SupplierID为PK,它具有State属性。

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

我正在尝试根据供应商是否位于德克萨斯州来更新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;

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

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为你很亲密:

UPDATE SUPPLIEDPART
SET UnitCost = UnitCost * 1.1
WHERE SupplierID IN (SELECT SupplierID    -- <-- IN instead of =
                 FROM SUPPLIER
                 WHERE State = 'TX')
-- no GROUP BY

答案 1 :(得分: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';