java - 要获取的 SQL,如果不存在则插入新条目

标签 java mysql sql stored-procedures

我不确定这个问题是否属于 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/

相关文章:

java - java中连续重复字符的替换

mysql - 如何估计 mysql 搜索查询中的行数?

java - 无法在 Java 中循环 ResultSet

sql - "CONTAINS"是否有任何 MySQL 聚合函数?

java arraylist ensureCapacity 不工作

java - 使用 Spring 3.1 保护两个网页的密码

java - 表单的 CXF 方法声明

MySQL:删除同一行时发生死锁

Sql Only 字符串搜索

sql - 属性等于 foo 或 bar 的 Rails 查询