MySQL搜索具有不同扩展名的重复文件名

deyfvvtc  于 2023-01-29  发布在  Mysql
关注(0)|答案(1)|浏览(166)

我有一个表,其中有一个名为filename的列,包含文件名及其扩展名。
我需要查找所有插入到表中的文件名相同但扩展名不同的文件名。

01_ceremony_10021.flv
01_ceremony_10021.mp4

我需要的文件列表中存在的mp4和flv格式。
我试过几种方法:

SELECT 
    archivo, 
    substr(archivo,1, locate(".flv", archivo)-1) as NomSinExt 
FROM videoscampus 
where (substr(archivo, -4) = '.flv' || substr(archivo, -4) = '.mp4' )
order by archivo asc

但这只是给了我整个视频列表。
该表的结构如下:

Column      Type
-----------------------------
id          int(11) Auto Incr    
filename    varchar(250)     
deleted     int(1)   
dateStart   datetime     
dateEnd     datetime

下面是我需要检测的一些文件名示例:

agai_cpal_t6_cristinacoca.mp4    
agai_cpal_t7_ent_ricardomartino_pacoarango.mp4   
agai_cpal_t8_alejandrogonzalez.mp4   
agai_cpal_t9_ent_ricardomartino_barbaradefranceschi.mp4  
AHE_INF_MMijanco_T3_Macronutrientes.flv <---- DUPLICATE I'm looking for
AHE_INF_MMijanco_T3_Macronutrientes.mp4 <---- DUPLICATE I'm looking for
ahe_inf_prim_t10_maitemijancos.mp4   
ahe_inf_t1_maitemijancos.mp4     
ahe_inf_t10_maitemijancos.mp4    
ahe_inf_t10.1_maitemijancos.mp4  
ahe_inf_t10.2_maitemijancos.mp4  
ahe_inf_t11_maitemijancos.mp4    
ahe_inf_t12_javiertejedor.mp4

提前感谢您的时间和帮助。

  • 奥拉洛
bkhjykvo

bkhjykvo1#

给予这个,它将表拆分为mp4和flv行,然后比较每个文件名的第一部分是否匹配。

SELECT
    SUBSTR(a.`filename`,1,LOCATE('.flv',a.`filename`)) as `base_name`,
    a.`filename` as `flv_file`,
    b.`filename` as `mp4_file`
FROM `videoscampus` a
JOIN `videoscampus` b
ON b.`filename` LIKE '%.mp4'
    AND SUBSTR(b.`filename`,1,LOCATE('.mp4',b.`filename`)) = SUBSTR(a.`filename`,1,LOCATE('.flv',a.`filename`))
WHERE a.`filename` LIKE '%.flv'
    AND a.`deleted` = 0
    AND b.`deleted` = 0

相关问题