Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

tạo mệnh đề where trong bash bằng cách sử dụng các biến

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tổng hợp các cột trên nhiều bảng trong MySQL?

  2. Nhận mục nhập cụ thể trong trường hợp mục nhập trùng lặp

  3. thủ tục lưu trữ mysql nhiều hàng trả về

  4. Không thể kết nối với cơ sở dữ liệu mysql?

  5. Chọn N bản ghi tuyệt vời nhất trong X nhóm