Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

gerar cláusula where no bash usando variáveis


Será mais eficiente fazer pequenas alterações na consulta - tornando mais fácil gerar SQL (equivalente) dinamicamente.

Ele usa o operador "entre" para evitar listas de comprimento variável para as condições 'in (...)'.

Observe o comentário sobre 1=1, ele é mantido conforme a pergunta, mas precisa ser revisto, pois sempre fará a condição passar.
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
" 

Eu NÃO tenho mysql, mas o acima funciona para o Postgresql.