我有一张包含调查数据的表格,另一张包含调查中每位受访者的数据。一个表(数据)有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
然后这会更新“数据”表中的所有值,而不仅仅是匹配的值。 非常感谢您的帮助!
答案 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