使用内连接更新只影响1行?

时间:2015-01-04 17:10:46

标签: sql-server

我正在尝试从名为files的表中更新表命名目录,当我使用下面的sql时它只更新第一行

UPDATE dbo.directory
SET    navigateurl = (SELECT files.filename
                      FROM   dbo.files
                             INNER JOIN directory
                               ON dbo.directory.id = files.id
                      WHERE  ( files.id = directory.id )); 

在表格文件中我有:

id | filename    
1  | index.html    
1  | index2.html    
1  | index3.html    
2  | aio.html    
2  | aaa.html

等等

并且在表目录中我有:

id | parent_id | name | navigateurl

我想要做的是能够更新目录表,以便表目录中的字段parent_id将更新为文件的字段id,字段navigateurl将更新为filename其中directory.id = files.id ,我上面的查询仅影响

第一行

1 个答案:

答案 0 :(得分:0)

将Where子句放在第二个选择.i意味着将它放在第一个选择中,如下所示:

UPDATE dbo.directory
SET    navigateurl = (SELECT files.filename
                      FROM   dbo.files
                             INNER JOIN directory
                               ON dbo.directory.id = files.id )
WHERE  ( files.id = directory.id ) ;