SQL查询,如果不存在,则插入新条目

3

我不确定这个问题是否适用于SQL、MySQL、存储过程甚至JDBC的领域。基本上,我想要一个类似下面的SQL函数:

INSERT IGNORE (id, data) INTO table
SELECT id FROM table WHERE `data` = data

这需要通过Java通过原始SQL或存储例程启动。如果insert ignore成功,它不应该立即跟随一个SQL查询来获取刚插入的内容,这看起来非常糟糕。请注意,id将自动生成。最好的方法是高效地使用SQL查询数量且易读吗?我真的不知道INSERT IGNORE有多有效。

1个回答

0

您可以使用LAST_INSERT_ID(),再加上一点逻辑:

INSERT IGNORE ... INTO Table
SELECT IF(LAST_INSERT_ID() <> 0, LAST_INSERT_ID(), (SELECT id FROM table WHERE `data` = data))

(未经测试)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接