Ще бъде по-ефективно да направите незначителни промени в заявката, което ще улесни динамичното генериране на (еквивалентен) SQL.
Той използва оператор "между", за да избегне списъци с променлива дължина за условията "в (...)".
Обърнете внимание на коментара за 1=1, той се запазва според въпроса, но трябва да бъде прегледан, тъй като винаги ще изпълни условието.
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
"
НЯМАМ mysql, но горното работи за Postgresql.