Sarà più efficiente apportare piccole modifiche alla query, semplificando la generazione dinamica di SQL (equivalente).
Utilizza l'operatore "tra" per evitare elenchi di lunghezza variabile per le condizioni "in (...)".
Nota commento su 1=1, viene mantenuto come da domanda, ma deve essere rivisto, poiché farà sempre passare la condizione.
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
"
NON ho mysql, ma quanto sopra funziona per Postgresql.