0

我正在使用 Select 和 Right Join SQL 函数将所有数据调用到一个表中。仅当分配表上的 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%'
4

3 回答 3

0

您要查找的内容称为副作用查询。您需要遵循以下基本结构。小心结果。如果一行出现 3 次,它将被更新 3 次。这会显着影响服务器性能和生成的日志。

我通常嵌入一个“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';
于 2014-01-22T19:54:18.283 回答
0

SQL Server 中joinin an的语法是: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.

于 2014-01-22T19:54:27.280 回答
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%'
于 2014-01-22T19:55:27.787 回答