Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Generieren Sie eine Where-Klausel in Bash mithilfe von Variablen

Es ist effizienter, geringfügige Änderungen an der Abfrage vorzunehmen, was die dynamische Generierung von (äquivalentem) SQL vereinfacht.

Es verwendet den „zwischen“-Operator, um Listen mit variabler Länge für die „in (...)“-Bedingungen zu vermeiden.

Beachten Sie den Kommentar zu 1 =1, er wird gemäß der Frage beibehalten, muss jedoch überprüft werden, da er die Bedingung immer erfüllt.

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
" 

Ich habe KEIN MySQL, aber das obige funktioniert für Postgresql.