Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入不重复的int-mysql_Java_Mysql_Sql Insert - Fatal编程技术网

Java 插入不重复的int-mysql

Java 插入不重复的int-mysql,java,mysql,sql-insert,Java,Mysql,Sql Insert,我有一个数据库{id,name,uuid,world,x,y,z} 我如何插入到这个数据库中,如果存在任何一行{world,x,y,z}与我插入的行相同,那么旧的行将被删除。我将id作为主键,并设置为自动递增 我搜索了这个论坛和谷歌,但没有找到任何有助于我的问题 谢谢您将使用插入。在重复密钥更新时: insert into table(name, uuid, world, x, y, z) values (@name, @uuid, @world, @x, @y, @z) on

我有一个数据库{id,name,uuid,world,x,y,z}

我如何插入到这个数据库中,如果存在任何一行{world,x,y,z}与我插入的行相同,那么旧的行将被删除。我将id作为主键,并设置为自动递增

我搜索了这个论坛和谷歌,但没有找到任何有助于我的问题


谢谢

您将使用
插入。在重复密钥更新时

insert into table(name, uuid, world, x, y, z)
    values (@name, @uuid, @world, @x, @y, @z)
    on duplicate key update name = values(name),
                            uuid = values(uuid);
变量
@name
等只是值的占位符。这还假设
id
是自动递增的,因此不需要插入它

要使其正常工作,您需要在四列上创建一个唯一的索引:

create unique index idx_table_world_x_y_z on table(world, x, y, z);
如果这些已声明为主键,则不需要这样做。

来自:

REPLACE
的工作原理与
INSERT
完全相同,只是如果 该表的值与
主键
UNIQUE
索引,在插入新行之前删除旧行

因此,声明一个
UNIQUE
索引行列(word、x、y、z),然后:

REPLACE INTO my_table (name, uuid, world, x, y, z)
VALUES (
    -- your values here 
)

你真的需要删除它并用新的id替换它,还是想用相同的id更新它?我不确定。我希望它尽可能简单,对数据库服务器进行尽可能少的查询。如果你有一个解决方案,我保留id,那么这是完美的,只要它是在一个查询完成?接受这是最直接的答案。