【发布时间】:2020-12-30 07:04:07
【问题描述】:
我想创建一个列,每次在第一列中找到相同的值时都会递增。这些字段可以是字符串或整数。比如:
field1 | field2
cat | 1
fish | 1
dog | 1
cat | 2
fish | 2
cow | 1
我的问题与这两个(1)、(2)类似,但如果密钥已经存在,我不想INSERT 或UPDATE。我想删除第二条记录。所以,类似DELETE FROM t1 WHERE field2 > 1。
This question (MySQL delete duplicate records but keep latest) 与我正在尝试做的最相似,除了没有整数自动递增的 ID 列,我有另一个名为 filename 的字段,每个字段都不同重复字段1。
这叫做聚合函数吗? 如何做到这一点?
【问题讨论】:
-
每次找到 which 值。此外,您似乎在假设行的顺序,但表代表 unordered 集。
-
row_number() over (partition by field1 order by whatever) -
每次找到
field1中的值时,将field2的值设置为比上次找到field1值时加1。这些字段可能是字符串或其他任何内容,它没有排序,我理解。 -
我使用的是 MariaDB 5.5。所以,row_number() 不可用。
-
编写一个插入触发器,获取最后一个数字并在插入前递增它
标签: mysql sql duplicates mariadb