MYSQL从不存在的地方选择更新插入

MYSQL从不存在的地方选择更新插入,mysql,select,insert,duplicates,exists,Mysql,Select,Insert,Duplicates,Exists,我的数据库结构是: items (id, item_name) user (id, username) inventory(id, user_id FK, item_id FK, amount) 我有一个select查询,它返回带有(item_id,amount)的行 我只想将select查询中的值添加到该库存表中。 所以我在伪代码中需要的是: FUNCTION give_items(IN in_user_id) FOR EACH ROW FROM THAT SELECT: I

我的数据库结构是:

items (id, item_name)
user (id, username)
inventory(id, user_id FK, item_id FK, amount)
我有一个select查询,它返回带有(item_id,amount)的行

我只想将select查询中的值添加到该库存表中。 所以我在伪代码中需要的是:

FUNCTION give_items(IN in_user_id)

FOR EACH ROW FROM THAT SELECT:    
   IF ROW EXISTS with user_id = in_user_id AND item_id = SELECT.item_id THEN INSERT ROW
   ELSE UPDATE ROW amount = amount + SELECT.amount
这就像插入到选择。。。在重复密钥上,但我需要尊重用户id和项目id,而不是主键

@编辑 这就是我现在得到的:

INSERT INTO `items_inventory` (`user_id`,`item_id`,`amount`)
SELECT mu.user_id, mi.item_id, SUM(mu.amount*mi.income) as amount_sum
FROM `mining_machines_users` AS mu
LEFT JOIN `mining_machines_income` AS mi ON mu.machine_id=mi.machine_id
WHERE mu.user_id=in_user_id
GROUP BY mi.item_id
ON mu.user_id=in_user_id AND mi.item_id=VALUES(`item_id`) //NEED FIX
`amount`=`amount`+VALUES(`amount`)

对不起,我的英语不好,希望你能帮助我:)

id属性是必需的吗?否则,如果您将user\u id和item\u id组合成一个主键,可能会更容易些。您为什么要大喊大叫?不,这不是必需的。如果您创建了一个组合键,这将确保user\u id,item\u id必须是唯一的。我可以在insert中返回select查询的结果吗?可以。