sql >> Databáze >  >> RDS >> Mysql

generovat klauzuli where v bash pomocí proměnných

Bude efektivnější provádět drobné změny v dotazu – usnadní se dynamické generování (ekvivalentního) SQL.

Používá operátor "mezi", aby se vyhnul seznamům s proměnnou délkou pro podmínky "v (...)".

Všimněte si poznámky o 1=1, je zachována jako u otázky, ale je třeba ji zkontrolovat, protože podmínku vždy splní.

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
" 

NEMÁM mysql, ale výše uvedené funguje pro Postgresql.



  1. dplyr left_join o méně než, větší než podmínka

  2. MySQL vypočítat procento

  3. Synchronizované provádění uložené procedury v mysql

  4. Smazat záznamy starší než 1 rok