我有以下格式的样本数据,ID和名称。名称是唯一值。在这里我们可以导入数据。但是在导入期间可能在sql查询中是否已经存在给定,然后使用带有增量值的旧后缀更新名称以及后缀。
在下面的数据中,Jack已经在那里,然后在导入期间我需要将其更新为Jack_old1并将新的导入为具有不同ID的Jack。
在下面的数据中,因为Sino已经存在,那么在导入过程中我需要将其更新为Sino_Old2并以不同的ID导入新的Sino。
ID Name
-- ------
1 Jack
2 Smith
3 Sino_Old1
4 Sino
上述逻辑是否可以通过带有更新查询的sql查询来实现,因为通过java处理时间更多。
答案 0 :(得分:0)
我认为你可以解决在重复的情况下尝试更改名称的丑陋。修改您的表以获得时间戳列:
ID | Name | insert_time
1 | Jack | '2017-01-12 14:00:00'
2 | Smith | '2017-01-12 14:00:00'
3 | Sino | '2017-01-12 14:00:00'
4 | Jack | '2017-01-12 14:23:15'
现在,如果插入了另一条select *
from yourTable
where Name = 'Jack' AND
Timestamp = (select max(Timestamp) from yourTable where Name = 'Jack')
记录,只需插入新数据而不更改名称:
{{1}}
如果您想要最新的Jack记录,可以使用以下查询:
{{1}}
还可以编写查询以获取第二个最旧的,第三个最旧的等记录。