gpt4 book ai didi

mysql - MS SQL 到 MYSQL 的 RANK 转换

转载 作者:行者123 更新时间:2023-11-29 12:07:14 25 4
gpt4 key购买 nike

我正在将我们的项目数据库从 SQL Server 转换为 MySQL,数据库转换已经完成。

我们有如下代码来根据哈希码识别重复记录并将其更新为重复。

MySQL 中的排名函数([ Rank function in MySQL )需要基于年龄的排名,该排名从 1 开始,每条记录递增 1。但对我来说,每个 hascode 的 Rank 应该从 1 开始,并且对于相同的 hascode 加 1,如果新的 hascode 出现,Rank 应该从 1 开始。

update table set Duplicate=1
WHERE id IN
( SELECT id FROM (
select RANK() OVER (PARTITION BY Hashcode ORDER BY Date asc) R,*
from table )A where R!=1 )

下面是表结构

CREATE TABLE TBL (
id int(11) NOT NULL AUTO_INCREMENT,
FileName varchar(100) DEFAULT NULL,
date datetime DEFAULT NULL,
hashcode varchar(255) DEFAULT NULL,
FileSize varchar(25) DEFAULT NULL,
IsDuplicate bit(1) DEFAULT NULL,
IsActive bit(1) DEFAULT NULL
PRIMARY KEY (`id`)
)

请帮我将此代码迁移到 MYSQL。

最佳答案

您不需要为此逻辑使用枚举。您只想在不是 hashcode 的最小日期的所有内容上设置重复标志:

update table t join
(select hashcode, min(date) as mindate
from table t
group by hashcode
) tt
on t.hashcode = tt.hashcode and t.date > tt.mindate
set t.Duplicate = 1;

关于mysql - MS SQL 到 MYSQL 的 RANK 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31266720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com