2

テーブルが 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

テーブルをそのまま (wage列を除いてStaff) 正規化された状態のままにし、(非正規化された) データの完全なセットが必要なときはいつでもこのクエリを実行します。

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 に答える