Если вы используете MySQL 8+, тогда вам может помочь ROW_NUMBER
.Мы можем сформулировать ваш запрос как объединение всех записей, не подлежащих дублирующим ограничениям, наряду с единственной записью, которая не считается дубликатом:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY comment_file_id) rn
FROM comments
WHERE comment_id = 203 AND attachement_id = 42 AND source = 'OUT'
)
SELECT comment_file_id, comment_id, attachement_id, source, created_by
FROM comments
WHERE comment_id = 203 AND (attachement_id <> 42 OR source <> 'OUT')
UNION ALL
SELECT comment_file_id, comment_id, attachement_id, source, created_by
FROM cte
WHERE rn = 1;