我正在使用Select和Right Join SQL函数将所有数据调用到一个表中。只有在Assignment表上的ans_primary ='1'时,才会填充被调用的数据。 如果asn_primary ='1',那么它将连接两个表的att_id = att_id以下所有列。
使用的两个表和列如下:
作业(att_id,itm_id,asn_primary)
附件(att_id,att_name,att_type,att_path,att_path2,att_path3)
select assignment.itm_id, attachment.att_name, attachment.att_type, attachment.att_path, attachment.att_path2, attachment.att_path3
from assignment
right join attachment
on assignment.att_id=attachment.att_id
where assignment.asn_primary = '1'
我需要能够在调用完成后更新att_name列中的所有字段。我不确定如何在使用Join调用后更新列。
我需要在调用/加入信息后运行的SQL是:
Update attachment
set att_name = att_name + '.tif'
where att_path3 like '%.tif%'
答案 0 :(得分:0)
您正在寻找的内容称为副作用查询。您将要遵循以下基本结构。小心结果。如果一行显示三次,则会更新三次。这可能会显着影响服务器性能和生成的日志。
我通常会使用'SELECT *'来允许我在执行任何更新之前查看结果。
UPDATE T1
SET T1.Column1 = 'New Data'
--SELECT *
FROM dbo.Table1 AS T1
INNER JOIN dbo.Table2 AS T2 ON T2.Id = T1.Id
WHERE T1.Column1 <> 'New Data';
答案 1 :(得分:0)
SQL Server join
中update
的语法是:
Update att
set att_name = att_name + '.tif'
from assignment a join
attachment att
on a.att_id = att.att_id
where a.asn_primary = '1' and
att.att_path3 like '%.tif%';
right outer join
似乎不合适,因为您正在对来自assignment
的字段进行过滤。
答案 2 :(得分:0)
UPDATE assignment
right join attachment
on assignment.att_id=attachment.att_id
SET att_name = att_name + '.tif'
where assignment.asn_primary = '1'
AND att_path3 like '%.tif%'