0

我有一个看起来像这样的 SQL 查询(WordPress 选项)。

INSERT INTO wp_options (option_name, option_value, autoload) VALUES
(
    'category_children',
    'a value',
    'yes'
),
(
    'test_options',
    'testing',
    'yes'
)
ON DUPLICATE KEY UPDATE
    option_name=option_name,
    option_value=option_value,
    autoload=autoload
;

做什么

它正确插入了值,但如果我用不同的值再次运行它,我希望它将值更新为新值。

它不做什么

它不会在我第二次运行查询时更新值。我改变价值观。我得到 SQL 没有错误。0 行受影响。

它应该做什么

如果我将“一个值”更改为“某个其他值”并运行查询,如果 category_children 已经存在,则应该替换该值。

问题

我做错了什么?我使用 mysql 5.5.24。

4

1 回答 1

3

更新option_nameoption_name不会有任何效果。您可以使用VALUES语法更新到插入的值:

INSERT INTO wp_options (option_name, option_value, autoload) VALUES
(
    'category_children',
    'a value',
    'yes'
),
(
    'test_options',
    'testing',
    'yes'
)
ON DUPLICATE KEY UPDATE
    option_name=VALUES(option_name),
    option_value=VALUES(option_value),
    autoload=VALUES(autoload)
;
于 2013-11-25T10:30:16.490 回答