我在这里阅读了几个答案,虽然它看起来像是重复的但我认为这个场景有点具体。
我有一个包含以下字段的表
id | language_id | item_code | ITEM_NAME
我想要的是指我尝试输入新行,检查language_id
和item_code
是否存在,并根据结果进行更新或插入。我知道我可以做点什么
SELECT * FROM table WHERE language_id = 1 AND item_code = PH001
并检查返回的行数
我想要的是如果我可以在一行上完成它以及如何
答案 0 :(得分:1)
如果您要检查重复项,则应将这些列编入索引。如果复合键不是唯一的,那么您在某些情况下会更新,但在其他情况下您会更新(否则您在复合键中永远不会有重复值)。
因此,您应该创建一个唯一索引并使用upsert syntax。
答案 1 :(得分:0)
你可以这样做:
If exists (SELECT * FROM table WHERE language_id=1 AND item_code=PH001)
Then
update statement
ELSE
Insert statement
答案 2 :(得分:0)
尝试将其作为SQL查询:
IF (SELECT COUNT(*) FROM table WHERE language_id=1 AND item_code='PH001') > 0 THEN UPDATE_QUERY;
ELSE INSERT_QUERY;
END IF;