ON DUPLICATE KEY UPDATE ...与WHERE或subselection?

时间:2010-12-20 10:32:00

标签: mysql

我有点担心我的一个mysql查询...以下查询接收变量$ DB_id ...如果已存在具有该主键的行,则查询执行更新。

$this->db->query("  INSERT INTO         modules_text 
                                            (   module_id,
                                                module_content,
                                                module_index
                                            )

                        VALUES              (   '{$DB_id}',
                                                '{$content['text']}',
                                                '{$index}'
                                            )

                        ON DUPLICATE KEY
                        UPDATE            module_content    = '{$content['text']}',
                                        module_index      = '{$index}'

                    ");

现在关注我的事情......受影响的行实际上属于用户是没有关系的。我想在UPDATE部分添加一个where语句,或者首先对允许受影响的行进行subselecion。类似的东西:

[...]
            ON DUPLICATE KEY
            UPDATE            module_content    = '{$content['text']}',
                            module_index      = '{$index}'
            WHERE            module_post_id    = '{$post]}'

这是不可能的......直到现在我还没有找到解决方案......任何帮助都会非常感激...感谢很多!!!!!

Saludos Sacha!

1 个答案:

答案 0 :(得分:0)

这不是ON DUPLICATE KEY的工作原理。只有当表的UNIQUE键或PRIMARY键匹配时,才会发生INSERT的更新部分。 (即:UNIQUE / PRIMARY键实际上是WHERE子句。)

有关详细信息,请参阅完整的MySQL docs