7

重複キーの後ですべての値を更新する簡単な方法はありますか? 例えば:

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

テーブルには約 50 の列があり、それぞれを更新するのは面倒です。何か案は?

4

3 に答える 3

5

REPLACE INTOこの目的のために使用できます:

REPLACE INTO published_books SELECT * from books;
于 2012-06-29T13:53:18.287 に答える
0

クエリを生成できる場合は、次のようなものを使用できます (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 . ')';
}
于 2013-10-18T10:14:47.877 に答える
-3
INSERT INTO published_books(col1, col2) 
VALUES (’xxx’, ‘yyy’) ON DUPLICATE KEY UPDATE col1 = VALUES(col1)
于 2012-06-29T00:31:14.037 に答える