Mysql
 sql >> Base de données >  >> RDS >> Mysql

générer la clause where dans bash en utilisant des variables

Il sera plus efficace d'apporter des modifications mineures à la requête, ce qui facilitera la génération dynamique de SQL (équivalent).

Il utilise l'opérateur "entre" pour éviter les listes de longueur variable pour les conditions "dans (...)".

Notez le commentaire à propos de 1 =1, il est conservé conformément à la question, mais doit être revu, car il fera toujours passer la condition.

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
" 

Je n'ai PAS mysql, mais ce qui précède fonctionne pour Postgresql.