Как добавить два значения из одной таблицы и сохранить в вычисляемой записи в той же таблице?

#mysql #sql

#mysql #sql

Вопрос:

Привет, у меня есть одна таблица здесь:

 equipment
ID,  Owner, Type,    Count  
 1   Bob    phone      10         
 2   Larry  computer   11
 1   Bob    computer   11
  

Что я пытаюсь сделать, это добавить компьютеры, которые Bob с идентификатором 1, к компьютерам Ларри с идентификатором 2. Я пытаюсь увеличить количество. Количество должно быть 11 11 = 22. Количество новых компьютеров для идентификатора 2 должно быть 22 и должно обновляться следующим образом в базе данных:

 equipment
ID,  Owner, Type,    Count  
 1   Bob    phone      10         
 2   Larry  computer   22
 1   Bob    computer   11
  

Если у Боба не было никакого компьютера, то есть не было записи с ID = 2, тогда запись должна быть создана.

Вот мой SQL:

 INSERT INTO EQUIPMENT(`ID`, `OWNER`, `TYPE`, `COUNT`)
SELECT 1 as t.ID, t.OWNER, t.TYPE, t.COUNT 
FROM EQUIPMENT t 
WHERE t.ID = 2
on duplicate key
update 
   COUNT = COUNT   t.COUNT;
  

Комментарии:

1. Я думаю, вам следует показать здесь больше данных. Что произойдет, если в таблице появятся другие компьютеры с разными идентификаторами?

2. Я добавил больше данных. Я понял вашу озабоченность. Я просто пытаюсь указать, что «Боб» добавил столько же, сколько компьютер «Ларри» имеет к его текущему счету. @TimBiegeleisen

3. ожидание катастрофы, как вы узнаете, сколько на самом деле у Боба??

4. что вы имеете в виду @e4c5

Ответ №1:

Почему вы используете insert для обновления строки?

 update equipment e cross join
       (select e1.* from equipment e1 where e1.id = 1) as e1
    select e.count = e.count   e1.count
    where e.id = 2;
  

Ответ №2:

Что-то вроде этого

 UPDATE Yourtable a
       JOIN Yourtable b
         ON a.NAME = b.NAME
            AND a.ID = b.ID   1
SET    a.Count = a.Count   b.Count 
  

Комментарии:

1. @th3r1singking — Отлично.. Что должно произойти, когда есть 3-я строка с ID = 3 for type = computer