用一个表更新一个表的选择列值

时间:2019-03-20 06:45:38

标签: sql sql-update left-join

我有一个场景,我需要将某些特定的列值从master_table复制到slave_table的同一列。请注意,slave_table已经包含数据,我仅需要根据条件(使用where子句指定)来更新特定字段。

表结构如下。

Master_table

id  zzco1   zzco2   zzco3   zzco4   zzco5   quote_id        quote_option_id
-----------------------------------------------------------------------------
1   ded     34      6.90     90     sad     10000123        2009090
2   rfg     45      7.90     30     sd      10000256        2008020
3   hji     62      80.90    70     pt      10000963        2009603
4   opp     30      61.90    20     rts     10000785        2007562

Slave_table

id  zzco1   zzco2   zzco3   zzco4   zzco5   quote_id        quote_option_id     zzco7   zzco8 zzco9
-----------------------------------------------------------------------------------------------------
1    null   null    null    null    null    10000123        2009090             cbz     xcc
2    null   null    null    null    null    10000123        2009090             cbz     xcc
3    null   null    null    null    null    10000123        2009090             cbz     xcc
4    null   null    null    null    null    10000256        2008020             szc     zxc
5    null   null    null    null    null    10000256        2008020             szc     zxc
6    null   null    null    null    null    10000256        2008020             szc     zxc

expected_输出低于

Slave_table

id  zzco1   zzco2   zzco3   zzco4   zzco5   quote_id        quote_option_id     zzco7   zzco8 zzco9
-----------------------------------------------------------------------------------------------------
1   ded     34      6.90     90     sad     10000123        2009090             cbz     xcc
2   ded     34      6.90     90     sad     10000123        2009090             cbz     xcc
3   ded     34      6.90     90     sad     10000123        2009090             cbz     xcc
4   rfg     45      7.90     30     sd      10000256        2008020             szc     zxc
5   rfg     45      7.90     30     sd      10000256        2008020             szc     zxc
6   rfg     45      7.90     30     sd      10000256        2008020             szc     zxc

基于quote_idquote_option_id,需要将数据从master_table复制到slave_table

我尝试了以下查询,但无法正常工作。它只存储空值。

UPDATE slav
  SET   slav.zzco1 = mast.zzco1,
slav.zzco2 = mast.zzco2,
slav.zzco3 = mast.zzco3,
slav.zzco4 = mast.zzco4,
slav.zzco5 = mast.zzco5,
FROM slave_table AS slav
  left JOIN master_table AS mast
ON mast.quote_id = slav.quote_id and mast.quote_option_id = slav.quote_option_id
WHERE slav.quote_id = 'quote_id'
  AND slav.quote_option_id= 'quote_option_id';

请更正我在查询中出错的地方。任何建议和潜在顾客都很感激。

1 个答案:

答案 0 :(得分:0)

如果要更新从属表中具有相同的quote_idquote_option_id的行,请使用INNER JOIN。