Het is efficiënter om kleine wijzigingen in de query aan te brengen, waardoor het eenvoudiger wordt om dynamisch (equivalent) SQL te genereren.
Het gebruikt de operator "tussen" om lijsten met variabele lengte voor de 'in (...)'-voorwaarden te vermijden.
Opmerking opmerking over 1=1, het wordt bewaard volgens de vraag, maar moet worden herzien, omdat het altijd aan de voorwaarde voldoet.
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
"
Ik heb GEEN mysql, maar het bovenstaande werkt voor Postgresql.