2

我有两张桌子,Staff并且Wages

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`)

谢谢。

4

2 回答 2

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
于 2012-11-07T09:04:05.547 回答
4

我只是将表保持原样(没有 中的wageStaff),处于规范化状态,并在我需要全套(非规范化)数据时运行此查询:

SELECT s.id, s.name, s.jobID, w.wage
FROM Staff s
LEFT OUTER JOIN Wages w ON s.jobID = w.jobID
于 2012-11-07T09:08:25.343 回答