#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
fortype = computer