ВСТАВИТЬ НА ДУБЛИКАТЬ КЛЮЧ - PullRequest
0 голосов
/ 11 апреля 2020

Я очень тяжело искал ответ, но не смог его найти

У меня есть эта таблица

main_inventory

, и я Я использую этот запрос, чтобы обновить его (этот запрос является обязательным, потому что у меня есть динамические c входные данные из моего внешнего интерфейса, чтобы я мог обновить несколько строк)

INSERT INTO main_inventory(name,sellingPrice,purchasePrice,averagePrice,totalQuantity) VALUES("test1",20,5,27.5,23),VALUES("test2",20,5,27.5,50)
ON DUPLICATE KEY UPDATE name = VALUES(name),sellingPrice = VALUES(sellingPrice),purchasePrice = VALUES(purchasePrice),averagePrice = VALUES(averagePrice),totalQuantity = VALUES(totalQuantity)

вещь, если я запускаю этот запрос выше. Таблица должна быть обновлена, но я хочу, чтобы столбец totalQuantity был добавлен, поэтому значение test1 должно быть 46, а test2 - 73. Я понятия не имею, что делать

имя столбца уникально и ключ

Я делаю запрос с nodejs

  let query4 = `INSERT INTO main_inventory(name,sellingPrice,purchasePrice,averagePrice,totalQuantity) VALUES`
  for(let x=0;x<main_items.length;x++){
            if(x+1 == main_items.length){                
                query4 = query4+`("${main_items[x].item}",${main_items[x].sellingPrice},${main_items[x].purchasePrice},${main_items[x].averagePrice},${main_items[x].quantity})
                 ON DUPLICATE KEY UPDATE name = VALUES(name),sellingPrice = VALUES(sellingPrice),purchasePrice = VALUES(purchasePrice),averagePrice = VALUES(averagePrice),totalQuantity = VALUES(totalQuantity)`
            }else{                
                query4 = query4+`("${main_items[x].item}",${main_items[x].sellingPrice},${main_items[x].purchasePrice},${main_items[x].averagePrice},${main_items[x].quantity}),`

            }
        }

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете ссылаться на текущее значение столбца, в который вы вставляете часть запроса UPDATE, например:

INSERT INTO main_inventory(name, sellingPrice, purchasePrice, averagePrice, totalQuantity) 
VALUES ('test1', 20, 5, 27.5, 23), ('test2', 20, 5, 27.5, 50)
ON DUPLICATE KEY UPDATE 
    name = VALUES(name),
    sellingPrice  = VALUES(sellingPrice),
    purchasePrice = VALUES(purchasePrice),
    averagePrice  = VALUES(averagePrice),
    totalQuantity = totalQuantity + VALUES(totalQuantity)  -- add to the original value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...