sql >> Base de Datos >  >> RDS >> Mysql

generar cláusula where en bash usando variables

Será más eficiente realizar cambios menores en la consulta, lo que facilitará la generación dinámica de SQL (equivalente).

Utiliza el operador "entre" para evitar listas de longitud variable para las condiciones 'en (...)'.

Tenga en cuenta el comentario sobre 1=1, se mantiene según la pregunta, pero debe revisarse, ya que siempre hará que la condición pase.

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
" 

NO tengo mysql, pero lo anterior funciona para Postgresql.