更新表中的列以等于同一表中的另一列WHERE NOT语法

时间:2016-11-01 18:06:09

标签: mysql sql postgresql

我有两个专栏,我正试图解决一些混合数据。混合数据的两列是industrytheme。有一个占位符列可以保存名为industry_temptheme_temp的数据。

由于themeindustry更多,我正在尝试执行以下两个步骤,只有第一个工作正如我预期的那样:

1)将行业临时表设置为等于混合到主题类别

中的所有行业类型
UPDATE my_table SET industry_temp=theme WHERE theme='industry_type_1' OR theme='industry_type_2' OR theme='industry_type_3' OR theme='industry_type_4';

2)当主题类型不等于行业类型时,将主题临时表设置为等于所有主题类型。

UPDATE my_table SET theme_temp=industry WHERE industry <> 'industry_type_1' OR industry <> 'industry_type_2' <> OR industry <>'industry_type_3' OR industry <> 'industry_type_4';

第2步不尊重<>运算符并添加行业列

中的所有值

2 个答案:

答案 0 :(得分:1)

我认为您需要AND而不是OR

但为简单起见NOT LIKE 'industry_type_%'应达到目标。

答案 1 :(得分:1)

使用NOT IN,逻辑更容易理解:

UPDATE my_table
    SET theme_temp=industry
    WHERE industry NOT IN ('industry_type_1', 'industry_type_2', 'industry_type_3', 'industry_type_4');