我有两个表,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`)
感谢。
答案 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