ФорумПрограммированиеPHP для идиотов → ON duplicate KEY UPDATE с мульти инсертом

ON duplicate KEY UPDATE с мульти инсертом

  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 24 мая 2009 г. 3:28

    Собственоо вопрос как прикрутить ON duplicate KEY UPDATE к такому запросу
    INSERT INTO table (`t1`,`t2`) VALUES ('1','1'),('2','2'),('3','3')
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 24 мая 2009 г. 3:38, спустя 9 минут 31 секунду

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 7:21, спустя 1 день 3 часа 43 минуты

    INSERT INTO table (`t1`,`t2`) VALUES ('1','1'),('2','2'),('3','3') ON duplicate KEY UPDATE `t1` = '777', `t2` = '888'
    adw/0
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 8:11, спустя 49 минут 45 секунд

    adw0rd, вопрос то был в том как определить какой из ('1','1'),('2','2'),('3','3') повторился.
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 8:13, спустя 2 минуты 8 секунд

    Professor, никак, ты определишь для всех случаев
    adw/0
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 8:53, спустя 40 минут 15 секунд

    А вот ты и неправ =)
    Читай что NRG прислал =)

    site:mysql.com ON duplicate KEY UPDATE
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 8:55, спустя 1 минуту 47 секунд

    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES©;
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 11:09, спустя 2 часа 13 минут 30 секунд

    Professor, круто, не разу не юзал…
    adw/0
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 11:12, спустя 3 минуты 30 секунд


    Professor, круто, не разу не юзал…
    только и у профессора не получится :-D

    надо нечто такое

    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE a=VALUES(a) + VALUES(b) + VALUES©;

    при условии что дубликат может быть в поле а. ибо … a = values(a) тоже дубль)
    Сапожник без сапог
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 11:29, спустя 16 минут 21 секунду

    Никогда не думал что скажу phpdude, что он не прав!
    Но увы это случилось!
    phpdude, ТЫ НЕ ПРАВ!!!

    a=VALUES(a) + VALUES(b) + VALUES©;

    да, это написанно в мануале, но по логике если смотреть,
    если дубликат , то заменяем а на значение VALUES(a) , b на значение b VALUES(b), с на значение с VALUES©;

    Ну и что что a дубликат? при замене на саму себя ничего не изменится, можно вообще убрать эту строчку и получится так.

    INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES©;

    Проверенно мной! Все работает как часы =)
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 11:31, спустя 2 минуты 48 секунд

    Professor, пиздец. а что тогда такое VALUES(a) ?как это выглядит?
    Сапожник без сапог
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 11:33, спустя 1 минуту 45 секунд

    Это значение столбца a которое мы в данный момент пытались вставить!
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 25 мая 2009 г. 11:34, спустя 41 секунду

    Ответный вопрос, а это что такое?
    a=VALUES(a) + VALUES(b) + VALUES©
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 11:35, спустя 1 минуту 1 секунду

    похуй))) да, я был лох :(
    Сапожник без сапог
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 25 мая 2009 г. 11:37, спустя 1 минуту 47 секунд


    Это значение столбца a которое мы в данный момент пытались вставить!
    я так же подумал.

    http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_values

    in the UPDATE clause refers to the value of col_name that would be inserted, had no duplicate-key conflict occurred.

    то есть если, я заюзаю эту функцию, и попытаюсь запись с дублирующимся значением, то ОНА ПРОСТО ВСТАВИТСЯ чтоли? или я неправильно чтото понял? … так то пиздец))
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!