Java-在MySQL中,如何仅在不存在行的情况下进行插入,仅在现有版本较少的情况下进行更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-在MySQL中,如何仅在不存在行的情况下进行插入,仅在现有版本较少的情况下进行更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1444字,纯文字阅读大概需要3分钟。
内容图文
![Java-在MySQL中,如何仅在不存在行的情况下进行插入,仅在现有版本较少的情况下进行更新](/upload/InfoBanner/zyjiaocheng/886/682d5d4f29ac493f8c8f91d6cb84ee32.jpg)
我正在寻找一种方法,仅在MySQL中不存在该行时才插入,并在该行存在且现有行的版本小于(或等于)新行的版本时进行更新.
例如,表定义为:
CREATE TABLE documents (
id VARCHAR(64) NOT NULL,
version BIGINT UNSIGNED NOT NULL,
data BLOB,
PRIMARY KEY (id)
);
并包含以下数据:
id version data
----------------------------
1 3 first data set
2 2 second data set
3 5 third data set
我想合并下表(UPDATE:id列是唯一的):
id version data
----------------------------
1 4 updated 1st
3 3 updated 2nd
4 1 new 4th
并且它应该产生以下内容(UPDATE:查看如何仅更新1和插入4):
id version data
----------------------------
1 4 updated 1st
2 2 second data set
3 5 third data set
4 1 new 4th
我看过INSERT … ON DUPLICATE KEY UPDATE …语句,但是它不允许使用某种WHERE子句.另外,我不能真正使用REPLACE,因为它也不允许WHERE.一个MySQL语句甚至可能吗?
我正在使用Java,并且正在尝试使用带有批处理(addBatch)的PreparedStatement插入/更新许多记录.任何帮助,将不胜感激.
更新:有什么方法可以将此查询与Java中的PreparedStatement一起使用?我有一个包含ID,版本和数据的Document对象列表.
解决方法:
我认为最好在INSERT ON DUPLICATE KEY UPDATE上插入.你可以像这样使用它
INSERT INTO table1 SELECT * FROM table2 ON DUPLICATE KEY UPDATE table1.data=IF(table1.version > table2.version, table1.data, table2.data), table1.version=IF(table1.version > table2.version, table1.version, table2.version)
未经测试的语法,但我相信这个想法应该可行.
内容总结
以上是互联网集市为您收集整理的Java-在MySQL中,如何仅在不存在行的情况下进行插入,仅在现有版本较少的情况下进行更新全部内容,希望文章能够帮你解决Java-在MySQL中,如何仅在不存在行的情况下进行插入,仅在现有版本较少的情况下进行更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。