我不确定这个问题是否属于 SQL、MySQL、存储例程甚至 JDBC 领域。基本上我想要一个如下所示的 SQL 函数:
INSERT IGNORE (id, data) INTO table
SELECT id FROM table WHERE `data` = data
这需要通过原始 SQL 或存储例程从 Java 启动。这看起来非常糟糕,因为如果 insert ignore
成功,它不应该紧跟 SQL 查询来获取刚刚插入的内容。请注意,id
将自动生成。执行此操作的最佳方法是在 SQL 查询数量和可读性等方面高效吗?我真的不知道 INSERT IGNORE 的效率如何。
最佳答案
您可以使用 LAST_INSERT_ID()
, 有一点逻辑:
INSERT IGNORE ... INTO Table
SELECT IF(LAST_INSERT_ID() <> 0, LAST_INSERT_ID(), (SELECT id FROM table WHERE `data` = data))
(未经测试)
关于java - 要获取的 SQL,如果不存在则插入新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548459/