无法使用mysql检测重复并重命名该字符串

时间:2016-08-08 09:07:38

标签: mysql

我的帐户架构如下:

AccountID | FileName 

如果文件名重复,我希望它将其存储为:

filename.txt
filename1.txt
filename2.txt
filename3.txt

我目前正在执行此操作,方法是通过运行查询来检查重复项的数量,以检查重复项的数量,然后在支持的最终运行的插入查询中重命名文件名。

整个程序可以在一个查询中完成吗?

2 个答案:

答案 0 :(得分:0)

您可以在一个查询中执行此操作:

Select t.ID, t.Account, z.dupCount
From Filename
Join
   (select Account, Count (*) dupCount
    from filename 
    group By account
    Having Count(*) > 1) z
   On z.account = t.Account
order By dupCount Desc

答案 1 :(得分:0)

  

运行查询以检查重复次数

但是您向我们展示的数据 没有重复项。

是的,我知道所有文件最初都可能被命名为filename.txt,但除非您存储原始名称,否则您不知道它的副本是什么。当我们不知道您是否需要处理被删除的记录时会出现另一个问题 - 此时计数变得无用且最大值也不起作用(filename10.txt小于filename1.txt )。

另请考虑您上传了11个名为filename.txt的文件的情况。当您尝试添加原始名称为filename1.txt的文件时会发生什么?您无法根据原始名称进行比较 - 因为它是唯一的 - 但派生名称与filename11.txt冲突

您目前正在寻找针对问题设计的解决方案的实施方案。该解决方案的实施将非常复杂。真的,你应该寻找一个有助于实现更简单的解决方案,例如:通过在提供的文件名前加上MySQL记录的自动增量id来创建派生文件名。