За последние 24 часа нас посетили 23619 программистов и 1550 роботов. Сейчас ищут 1178 программистов ...

on duplicate key update

Тема в разделе "MySQL", создана пользователем Yadfewm, 17 апр 2015.

  1. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Пробовал и так и так, как то не выходит:

    Код (Text):
    1. INSERT INTO `time`
    2. ( `worker`, `type`, `cost` ) VALUES
    3. ('13', '15', '1') on duplicate key update `cost` = '1',
    4. ('13', '14', '11') on duplicate key update `cost` = '11',
    5. ('9', '15', '2') on duplicate key update `cost` = '2',
    6. ('9', '14', '22') on duplicate key update `cost` = '22'
    7. ;
    Код (Text):
    1. INSERT INTO `time`
    2. ( `worker`, `type`, `cost` ) VALUES
    3. ('13', '15', '1') on duplicate key update ('13', '15', '1'),
    4. ('13', '14', '11') on duplicate key update ('13', '14', '11'),
    5. ('9', '15', '2') on duplicate key update ('9', '15', '2'),
    6. ('9', '14', '22') on duplicate key update ('9', '14', '22')
    7. ;
    Уникальное поле составное worker+type
    Значение которое нужно обновлять cost
    Интересует множественная вставка/обновление
     
  2. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Во-первых ман по конструкции читайте.
    https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

    Во-вторых, "не выходит" это не ответ который субд на запрос выдает.

    В третьих:
    Код (Text):
    1.  
    2. INSERT INTO tbl_name (first, second)
    3.     VALUES
    4.     (1, 2),
    5.     (3, 4),
    6.     (5, 6)
    7. ON DUPLICATE KEY UPDATE
    8.     second = VALUES(second)
     
  3. Yadfewm

    Yadfewm Активный пользователь

    С нами с:
    20 июл 2009
    Сообщения:
    223
    Симпатии:
    0
    Огромное Спасибо!
    Действительно в мануале (на который я натыкался) есть такая конструкция, проглядел:
    Код (Text):
    1. INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    2.   ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
    Я уверен, что не проглядел бы, если бы она была на русском ;)
    Это, наверное, самое частая причина глупых вопросов - неумение быстро читать на английском =(

    Всем добра и пирожков!