MySQL поиск дубликатов имен файлов с разными расширениями

0

У меня есть таблица, среди других столбцов, столбец с именем 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

Заранее благодарим за ваше время и помощь.

-Orallo

Теги:
filenames
substring

1 ответ

1
Лучший ответ

Попробуй. Он разбивает таблицу на строки mp4 и flv, затем сравнивает совпадения в первой части каждого имени файла.

SELECT
    SUBSTR(a.'filename',1,LOCATE('.flv')) 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')) = SUBSTR(a.'filename',1,LOCATE('.flv'))
WHERE a.'filename' LIKE '%.flv'
    AND a.'deleted' = 0
    AND b.'deleted' = 0
  • 0
    Привет Слоан! спасибо за ваш ответ, ваше решение было почти идеально. Запрос жаловался на то, что LOCATE принимает 2 параметра вместо одного, поэтому я просто добавил имя файла в качестве второго параметра при каждом вызове LOCATE, и вуаля! все работало как шарм. Еще раз спасибо.
  • 0
    Рад, что это сработало, и извините за опечатку! Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню