如果两列匹配之一中的值,则更新MySQL列

时间:2011-09-14 13:32:23

标签: mysql

我有一张包含调查数据的表格,另一张包含调查中每位受访者的数据。一个表(数据)有3个字段“名称”,“联系人”和“参与”。 另一个表(属性)包含有关“名称”的更多详细信息,还包含“参与”值。

如果表“attributes”中的“name”与表“data”中的“name”或“contact”匹配,我想用表“attributes”中的“participant”值更新表数据。

我写了这个:

UPDATE data 
SET participate = (SELECT attributes.participate
FROM attributes
WHERE attributes.name = data.name)

这会更新“数据”表中的“参与”值,但如果名称也出现在“数据”表的联系人字段中,我该如何更新“参与”值? 如果我用:

运行另一个查询
WHERE attributes.name = data.contact

然后这会更新“数据”表中的所有值,而不仅仅是匹配的值。 非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

尝试一下:

update 
data as d inner join attributes as a on d.name = a.name or d.contact = a.name
set d.participate = a.participate

答案 1 :(得分:0)

试试这个:

update data d, attributes a
   set d.participate = a.participate
 where a.name = d.name or a.name = d.contact