Данная таблица может иметь следующие строки.
т.е. для данного filename
может быть два уникальных version_id
(s).
file_id version_id filename
1 OS_v1 abc.update
1 App_v1 abc.update
2 OS_v2 xyz.update
2 App_v2 xyz.update
3 OS_v1 abc(1).update
3 App_v1 abc(1).update
PRIMARY KEY (`version_id`, `filename`)
Как обнаружить, что нет двух разных имен файлов, имеющих одинаковую комбинацию OS_App (версии)?
В данном примере строка, заданная с помощью file_id=3
, является дубликатом file_id=1
.
Примечание. Отдельные столбцы для ОС и версии приложения легко определить, но этотребуется много изменений кода, которые мы не хотели бы проходить.
Вопрос: существует ли запрос SELECT
, который будет возвращать только file_id = 1
и file_id = 2
и пропускать file_id = 3
?
До сих пор я придумал этот запрос, который выбирает комбинацию version_id
, сгруппированную по filename
, но строка-2 является дубликатом строки-1
SELECT DISTINCT(GROUP_CONCAT(version_id SEPARATOR '-')) ,
filename
FROM schema_name.table_name
GROUP BY filename;
Возвращает:
concat_version patch_filename
OS_V1-APP_V1 xyz.update
OS_V2-APP_V2 abc(1).update
OS_V1-APP_V1 abc.update