Será más eficiente realizar cambios menores en la consulta, lo que facilitará la generación dinámica de SQL (equivalente).
Utiliza el operador "entre" para evitar listas de longitud variable para las condiciones 'en (...)'.
Tenga en cuenta el comentario sobre 1=1, se mantiene según la pregunta, pero debe revisarse, ya que siempre hará que la condición pase.
min_date='2020-06-06'
max_date='2020-06-08'
max_seq_min_date=1
max_seq_max_date=3
echo "
WHERE 1 = 1 or case
when batch_date = '$min_date' then seq_num between 1 and $max_seq_min_date
when batch_date = '$max_date' then seq_num between 1 and $max_seq_max_date
when batch_date between '$min_date' and '$max_date' then seq_num between 1 and 4
else false
end
"
NO tengo mysql, pero lo anterior funciona para Postgresql.