SQL Complex更新查询

时间:2012-08-10 17:45:45

标签: sql sql-server tsql

我需要将表列更新为与该列中当前存在的数据相同的数据,以及从另一个表中的一列添加数据。有问题的表格是3N。

我试图通过将原则表中一列的数据汇总到现有表中的列来进行复杂的更新。

update Catelog.Component SET Name = p.Number 
          FROM Catelog.Part p                                JOIN 
               Catelog.ComponentPart cp ON p.ID = cp.PartID  JOIN 
               Catelog.Component c      ON cp.ComponentID = c.ID  
          where p.BrandID = 1003
          AND ct.Name='Door' + '|'+ Name;

如果您注意到我正在设置的名称列,我将重置该列中已存在的数据以及为PartNumber添加前缀。

基本上我需要在Name列中为现有数据加上零件表中的零件号。

现在SQL正在给我一个模棱两可的错误。

另外,我不认为行的设置方式与我的结构更新有关。

这样做加入更新的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

UPDATE c
  SET c.Name = RTRIM(p.Number) + '|' + c.Name 
FROM Catelog.Part AS p              
INNER JOIN Catelog.ComponentPart AS cp     
  ON p.ID = cp.PartID  
INNER JOIN Catelog.Component AS c  
  ON cp.ComponentID = c.ID  
WHERE p.BrandID = 1003
  AND ct.Name = 'Door|'+ c.Name;

答案 1 :(得分:2)

Update  C
Set C.Name = CAST(p.Number as varchar(10)) + '|'+ C.Name
FROM Catelog.Component C
JOIN Catelog.ComponentPart cp     
    ON p.ID = cp.PartID  
JOIN Catelog.Component c  
    ON cp.ComponentID = c.ID  
where p.BrandID = 1003
AND ct.Name='Door' + '|'+ C.Name;

我不确定姓氏所在的位置(从哪个表开始,不清楚)

答案 2 :(得分:0)

你想这样做:

update Catelog.Component 
SET Name = p.Number + '|'+ Name
FROM Catelog.Part p              
JOIN Catelog.ComponentPart cp  ON p.ID = cp.PartID  
JOIN Catelog.Component c       ON cp.ComponentID = c.ID  
JOIN Catelog.Category ct       ON p.CategoryID = ct.ID
where p.BrandID = 1003
    AND ct.Name='Door';