sql >> データベース >  >> RDS >> Mysql

変数を使用してbashでwhere句を生成する

    クエリに小さな変更を加える方が効率的であり、(同等の)SQLを動的に生成するのが簡単になります。

    「between」演算子を使用して、「in(...)」条件の可変長リストを回避します。

    1 =1についてのコメントに注意してください。質問どおりに保持されますが、常に条件に合格するため、確認する必要があります。

    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
    " 
    

    私はmysqlを持っていませんが、上記はPostgresqlで機能します。



    1. MySQLログを開始して確認するにはどうすればよいですか?

    2. mysqlサブクエリの不明な列

    3. Explicit_defaults_for_timestampを有効にする方法は?

    4. mysqlのWHERE句でOR&ANDを使用する方法