2012-08-28 118 views
1

我有两个表..UPDATE查询涉及多个表

人:

empid(primary key) 
    firstname 
    lastname 
    email 

详情:

Did(primary key) 
    salary 
    designation 
    empid 

现在我需要更新其名称是“ABC员工的电子邮件'AND指定为Manager(假设有多个员工姓名abc,因此需要检查指定) 我正在使用sql server 2008

+0

的可能重复(http://stackoverflow.com/questions/1604091/update-a-table-using- [更新使用JOIN在SQL Server中的表?] join-in-sql-server) –

回答

7
UPDATE p 
    SET email = '[email protected]' 
    FROM dbo.Persons AS p 
    INNER JOIN dbo.Details AS d 
    ON p.empid = d.empid 
    WHERE p.firstname = 'abc' 
    AND d.Designation = 'manager'; 
+0

我不知道你可以使用这样的别名。对我来说,总是觉得很奇怪,你需要指定表格两次。我来自Access,更新语句从不具有“FROM”子句;你只需'更新人员内部联接详细信息ON Persons.PersonID = Detail.PersonID SET email ='us @ them.com'' –

+2

SQL Server语法与Access很多不同。 –

0

试试这个:

UPDATE 
    [Persons] 
SET 
    [Persons].[email]='###@###.###' 
FROM 
    [Persons] 
    INNER JOIN [Persons].[empid] 
    ON [Details].[empid] = [Persons].[empid] 
WHERE 
    [Persons].[firstname]='abc' AND 
    [Details].[designation]='Manager' 
+0

'INNER JOIN [Persons]。[empid]'?除了错误和不使用表别名,这与我的答案有何不同? –

+0

@AaronBertrand至少他改变了格式,电子邮件字符串和大写'经理' – swasheck