我有一个场景,我需要将某些特定的列值从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_id
和quote_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';
请更正我在查询中出错的地方。任何建议和潜在顾客都很感激。
答案 0 :(得分:0)
如果要更新从属表中具有相同的quote_id
和quote_option_id
的行,请使用INNER JOIN。