如何更新MySQL/MariaDB中指定了最新值的日期类型的列



我正在通过Spring Boot的JPA依赖关系处理我的MariaDB。

我有一张表,看起来像下面描述的

>认>>
字段 类型 额外
id varchar
name varchar(256( 日期 datetime(3( 主用NULL
ip varchar

在MySQL和MariaDB中,您可以在更新语句中使用ORDER BY和LIMIT:

UPDATE my_table 
SET `date` = NOW() 
WHERE
id = 'finding_id' AND
ip = 'finding_ip'
ORDER BY `date` DESC
LIMIT 1;

由于WHERE子句的原因,上面将使用当前日期时间更新过滤器中具有最高日期的记录。

注意:最好不要将任何保留字用作列名。你可以,但你必须在字段名周围使用反勾号。

这里的问题是数据库模式。

您有一个主键,它是一个由3列组成的UNIQUE复合键,并且您希望其中能够包含非唯一集。

除非您想每次都将日期更新为新的日期(增加/减少毫秒(,否则这是不可能的。

由于您似乎不关心这3列的唯一性,我建议您将索引类型从PRIMARY更改为index(仍然是复合的(,这样您就没有UNIQUE约束。

之后添加一个新的";真实的";id列primary_id(或者重命名另一个,这样新的可以是id(列,它只是启用了"自动增量"的普通PRIMARY KEY

相关内容

最新更新