我有两张表:chapter
和updates
我有一个UPDATE查询,可以将updates
表中的成员ID设置为chapter
表。我试图找到一个语法解决方案的问题是我需要使用一个查询,但如果更新值为'0'
,则不要更新(跳过)该值。当提交更新(等待UPDATE处理)时,并非所有ID都被更改,而那些未更新的ID将作为updates
保存到'0'
表中,而有效更改是七位整数。应用UPDATE时会出现问题,当该字段实际应保留其现有值时,'0'
会覆盖任何现有ID。我当前查询的示例是:
UPDATE chapter
SET chapter.election_date = updates.election_date,
chapter.president = updates.president_id,
chapter.vice_president = updates.vice_president_id,
chapter.secretary = updates.secretary_id,
WHERE
updates.chapter_id = chapter.id
AND updates.installation_date < CURRENT_DATE ()
根据此示例,我试图找到一种方法,chapter.president
如果这是可行的,我们将不胜感激任何帮助或指导。
答案 0 :(得分:1)
只需将此条件添加到join
子句:
UPDATE chapter
JOIN updates ON updates.chapter_id = chapter.id AND
updates.president_id != '0'
SET chapter.election_date = updates.election_date,
chapter.president = updates.president_id,
chapter.vice_president = updates.vice_president_id,
chapter.secretary = updates.secretary_id,
WHERE updates.installation_date < CURRENT_DATE ()
答案 1 :(得分:0)
如果updates.president_id = 0,则以下查询不会更新chapter.president,但会更新所有其他字段。
UPDATE chapter, updates
SET chapter.election_date = updates.election_date,
chapter.president = if(updates.president_id<>0,updates.president_id,chapter.president)
chapter.vice_president = updates.vice_president_id,
chapter.secretary = updates.secretary_id,
WHERE
updates.chapter_id = chapter.id
AND updates.installation_date < CURRENT_DATE()