sql >> Databasteknik >  >> RDS >> Mysql

generera where-sats i bash med hjälp av variabler

Det blir mer effektivt att göra mindre ändringar i frågan - vilket gör det lättare att generera (motsvarande) SQL dynamiskt.

Den använder operatorn "mellan" för att undvika listor med variabel längd för villkoren "i (...)".

Notera kommentar om 1=1, den behålls enligt fråga, men måste ses över, eftersom den alltid kommer att få villkoret att passera.

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
" 

Jag har INTE mysql, men ovanstående fungerar för Postgresql.



  1. INTE IN vs INTE FINNS

  2. Hur man inaktiverar och aktiverar alla begränsningar i tabell mysql inkl. PK FK CHK UNI mm

  3. Vad är den lagrade förfarandet och varför den lagrade förfarandet?

  4. Unik begränsning som kontrollerar två kolumner i MySQL