Дурний, але простий приклад: Припустимо, у мене є таблиця "Позиція", де я зберігаю підсумки отриманих елементів.
Item_Name Items_In_Stock
Назва елемента тут є первинним ключем. Як мені досягти наступного, коли я коли-небудь отримую предмет А у кількості X.
Якщо товар не існує, я вставляю новий відновлений для елемента A і встановлюю на складі значення X, а якщо існує запис, де на складі є Y, то нова вартість на складі є (X + Y)
INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A' )
Моя проблема полягає в тому, що в моїй фактичній таблиці є кілька стовпців. Чи хороша ідея писати декілька операторів вибору в частині оновлення?
Звичайно, я можу це зробити в коді, але чи є кращий спосіб?
ON DUPLICATE KEY UPDATE new_items_count = new_items_count + 27
. Побачивши, що ви не розміщували інші стовпці, важко відповісти на ваше запитання, оскільки очікувана поведінка невідома. Що ви робите з іншими колонками? Оновлення деяких номерів чи?