迭代一个mysql表并更新另一个匹配的位置

时间:2012-12-05 16:53:28

标签: mysql loops

我在使用离线帐户更新在线数据库时出现问题。不要问......如果你得到我的漂移,那就是Charlie-Foxtrot,但我必须找到一个解决方案。

我需要发生以下逻辑,这远远超出了我的技能。导入表中大约有28,000条记录,成员和member_data表中有2,400条记录 - 如果这有帮助的话。我希望一个有着强大功夫的善良灵魂可以帮助我。

表格:

members
    id
    group_id
member_data
    id
    account
    phone
    modified
import
    account
    phone

理想的逻辑:

Loop through each record in import table and search for match between import.account and member_data.account.

If Match:
    Update members.group_id to '5'.
    Update member_data.modified to '1'.

If No Match:
    Search for match between import.phone and member_data.phone.
        If Match:
            Update member_data.account with import.account of the matched record.
            Update members.group_id to '5'.
            Update member_data.modified to '1'.

1 个答案:

答案 0 :(得分:0)

首先,您可以在“其他非标准实施”部分中查看此链接:

Merge (SQL)

如果我正确地将我的TSQL经验转换为MySQL的风格,那么您将需要所谓的INSERT ... ON DUPLICATE KEY UPDATE语句。创始人:

MySQL Documentation for INSERT...ON DUPLICATE KEY UPDATE

这样做实际上是在发生密钥违规之前插入记录。在您的情况下,帐号会使记录唯一。当找到密钥违规(匹配记录)时,您可以通过更新语句指定要发生的内容。

我希望这会对你有所帮助。