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

genera la clausola where in bash usando le variabili

Sarà più efficiente apportare piccole modifiche alla query, semplificando la generazione dinamica di SQL (equivalente).

Utilizza l'operatore "tra" per evitare elenchi di lunghezza variabile per le condizioni "in (...)".

Nota commento su 1=1, viene mantenuto come da domanda, ma deve essere rivisto, poiché farà sempre passare la condizione.

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
" 

NON ho mysql, ma quanto sopra funziona per Postgresql.