根据2种不同的表条件替换数据库字段

时间:2019-06-17 14:08:31

标签: mysql sql database conditional-statements

我需要根据电子邮件匹配条件更新表,并且需要了解可以解决此问题的SQL查询。

我有2个表“ old_data”和“ new_data”

Old_data contains around 60,000 records and fields "EMAIL"
New_data contains around 90,000 records and fields "EMAIL" "WHITE_NO"

这是我需要帮助的逻辑条件。

Update * from Old_data, New_data SET New_data.WHITE_NO = 'true' WHERE old_data.EMAIL = New_data.EMAIL

它的作用是在old_data表中查找所有电子邮件,并将它们与所有相同的电子邮件匹配到new_data表中,并将WHITE_NO字段值替换为true。

2 个答案:

答案 0 :(得分:1)

您需要使用两个表的联接进行更新:

update New_data
inner join old_data on old_data.EMAIL = New_data.EMAIL
set New_data.WHITE_NO = 'true'

答案 1 :(得分:1)

UPDATE new_data
       JOIN old_data
       ON new_data.EMAIL = old_data.EMAIL
SET    new_data.WHITE_NO = 'true';

OR

UPDATE new_data
SET new_data.WHITE_NO ='true'
WHERE new_data.EMAIL IN (SELECT EMAIL FROM old_data);