Sẽ hiệu quả hơn nếu thực hiện các thay đổi nhỏ đối với truy vấn - giúp tạo SQL động (tương đương) dễ dàng hơn.
Nó sử dụng toán tử "between" để tránh danh sách có độ dài thay đổi cho các điều kiện 'in (...)'.
Lưu ý nhận xét về 1 =1, nó được giữ nguyên theo câu hỏi, nhưng cần được xem xét lại, vì nó sẽ luôn làm cho điều kiện vượt qua.
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
"
Tôi KHÔNG có mysql, nhưng ở trên hoạt động cho Postgresql.