使用另一个表作为信息查询更新表?

时间:2012-11-07 09:01:52

标签: sql

我有两个表,StaffWages

Staff包含

 id,   name,     jobID,   wage
  1   Name1       2        
  2   Name2       4      
  3   Name3       1      
  4   Name4       2      

Wages包含

 JobID, Wage
   1    1500
   2    800
   3    1600
   4    2000

(实际上有很多列我刚刚进入前4名)

我错过了Staff表中的工资,而员工表中我需要的工资是Wages表中的工资..

所以我需要一个查询,使Staff表看起来像:

 id,   name,     jobID,   wage
  1   Name1       2        800
  2   Name2       4        2000
  3   Name3       1        1500
  4   Name4       2        800

我尝试的一个示例查询是:

UPDATE `Staff` 
SET wage = (SELECT wage FROM `Wages`) 
WHERE jobID = (Select jobId FROM `Wages`)

感谢。

2 个答案:

答案 0 :(得分:6)

MySQL

UPDATE Staff a
        INNER JOIN Wages b
            ON a.jobID  = b.JobID
SET a.wage = b.wage

MSSQL

UPDATE a
SET a.wage = b.wage
FROM Staff a
        INNER JOIN Wages b
            ON a.jobID  = b.JobID

答案 1 :(得分:4)

我只是按原样保留表(wage中没有Staff列),处于规范化状态,并在需要完整的(非规范化)数据集时运行此查询:

SELECT s.id, s.name, s.jobID, w.wage
FROM Staff s
LEFT OUTER JOIN Wages w ON s.jobID = w.jobID