【问题标题】:Mysql: ON DUPLICATE KEY UPDATE ALL VALUES?Mysql:重复键更新所有值?
【发布时间】:2012-06-29 00:24:54
【问题描述】:

是否有任何简单的方法可以在重复键后更新所有值?例如:

INSERT INTO published_books
           SELECT * FROM books
           WHERE book_id = book_id
           ON DUPLICATE KEY UPDATE ?everything?

该表有大约 50 列,更新每一列都会很痛苦。有什么想法吗?

【问题讨论】:

  • 为了编码员......和其他编码员的眼睛:)

标签: mysql


【解决方案1】:

您可以为此使用REPLACE INTO

REPLACE INTO published_books SELECT * from books;

【讨论】:

【解决方案2】:

如果你可以生成查询,你可以使用这样的东西(PHP):

$fields = array(
    'field_1',
    'field_2',
    'field_3'
);
$query = '
    INSERT INTO table (
    ' . implode(', ', $fields) . '
    ) SELECT
        -- ...
    ON DUPLICATE KEY UPDATE ';
foreach ($fields as $i => $field) {
    $query .= ($i > 0 ? ', ' : '') . $field . '=VALUES(' . $field . ')';
}

【讨论】:

    【解决方案3】:
    INSERT INTO published_books(col1, col2) 
    VALUES (’xxx’, ‘yyy’) ON DUPLICATE KEY UPDATE col1 = VALUES(col1)
    

    【讨论】:

    • 你会如何用 50 列做同样的事情? col1, col2... col50?
    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 2012-04-27
    • 2011-11-19
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多