mysql - 是否可以构建一个查询,首先使用 where 和连接条件进行更新,如果更新存在则插入?

标签 mysql insert-update

我需要更新一个已与多个表连接的表以提取数据,如果更新失败,则将数据插入新行... 目前我有一个更新查询

......

我想如果上面的查询失败它应该插入

INSERT INTO ASSET_ASSOCIATION.....

谢谢...

最佳答案

不可能用上面有限的细节给你一个完整的答案,但正如Loopo所说,你可以使用INSERT....ON DUPLICATE KEY UPDATE。例如,根据您的更新:-

INSERT INTO ASSET_ASSOCIATION(ASSET_ID, ASSOCIATED_ASSET_ID, ASSET_FIELD_ID)
SELECT a.ID, b.ID, 46
FROM ASSET a
INNER JOIN HD_TICKET ON HD_TICKET.CUSTOM_FIELD_VALUE2 = a.NAME
INNER JOIN USER U ON U.ID = HD_TICKET.SUBMITTER_ID
INNER JOIN ASSET b ON U.FULL_NAME LIKE BINARY CONCAT('%',b.NAME,'%') AND b.NAME <> ''
WHERE ASSET.ASSET_TYPE_ID = 5 
AND HD_TICKET.ID = 120
ON DUPLICATE KEY UPDATE ASSOCIATED_ASSET_ID=VALUES(ASSOCIATED_ASSET_ID)

假设您在 asset_id 和 asset_field_id 上有唯一的键。然而,几乎可以肯定您的表比这更复杂。

关于mysql - 是否可以构建一个查询,首先使用 where 和连接条件进行更新,如果更新存在则插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17230300/

相关文章:

mysql - 来自 MySQL 的 UITabbar 徽章值

mysql - 创建新数据库,我的表是什么?

MongoDB 数字字段不会插入或更新我输入的数字

mysql - INSERT ON DUPLICATE KEY 一次更新多行

SSIS:插入/更新

mysql - 错误代码 : 1136. 列计数与第 1 行的值计数不匹配,为什么?

php - 在 MySQL 中的单个单元格中插入多个值

php - 如何在 Laravel 中划分读/写数据库设置?

php - 使用 SET 语义参数化插入...重复键更新失败