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

Mysql 是否可以构建一个查询,首先使用where和join条件进行更新,如果存在更新,则插入?,mysql,insert-update,Mysql,Insert Update,我需要更新一个与多个表连接的表以提取数据,如果更新失败,则将数据插入新行。。。 目前我有一个更新查询 我想如果上面的查询失败,它应该插入 INSERT INTO ASSET_ASSOCIATION..... 谢谢…无法提供上述有限细节的完整答案,但正如Loopo所说,您可以在重复密钥更新时使用INSERT。例如,根据您的更新:- INSERT INTO ASSET_ASSOCIATION(ASSET_ID, ASSOCIATED_ASSET_ID, ASSET_FIELD_ID) SELEC

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

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

INSERT INTO ASSET_ASSOCIATION.....

谢谢…

无法提供上述有限细节的完整答案,但正如Loopo所说,您可以在重复密钥更新时使用INSERT。例如,根据您的更新:-

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)
插入资产\关联(资产\ ID、关联的\资产\ ID、资产\字段\ ID)
选择a.ID、b.ID、46
来自资产a
HD_TICKET.CUSTOM_字段上的内部联接HD_TICKET_值2=a.NAME
U.ID上的内部加入用户U=HD\U票证提交者\U ID
U.FULL_名称上的内部联接资产b,如二进制CONCAT(“%”、b.NAME、“%”)和b.NAME“”
其中ASSET.ASSET\u TYPE\u ID=5
而HD_TICKET.ID=120
重复密钥时更新关联的\u资产\u ID=值(关联的\u资产\u ID)

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

请查看插入。。。关于重复密钥更新…功能