我有两张桌子。
其中一个是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;
----此查询导致命令未正确结束----
答案 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';