sql >> Database teknologi >  >> RDS >> Mysql

generere where-klausul i bash ved hjælp af variabler

Det vil være mere effektivt at foretage mindre ændringer i forespørgslen - hvilket gør det nemmere at generere (tilsvarende) SQL dynamisk.

Den bruger operatoren "mellem" for at undgå lister med variabel længde for "i (...)"-betingelser.

Bemærk kommentar om 1=1, den opbevares i henhold til spørgsmålet, men skal gennemgås, da den altid vil få tilstanden til at bestå.

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
" 

Jeg har IKKE mysql, men ovenstående virker for Postgresql.



  1. Hvordan starter man MySQL-server fra kommandolinjen på Mac OS Lion?

  2. Sådan indstilles navigationsformularen som standardformular i Microsoft Access

  3. Tilsløring af følsomme data i dine eksekveringsplaner

  4. Flet to kolonner fra to tabeller til én