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

Truy vấn Django raw (), trường được tính toán trong mệnh đề WHERE

Thực ra nó không liên quan gì đến bản thân Django mà là với cách hoạt động của MySQL.

Bạn không thể sử dụng bí danh trong điều kiện WHERE, vì đánh giá mệnh đề WHERE đứng trước đánh giá bí danh.

Bạn có thể:

  • Lặp lại mệnh đề:

    Company.objects.raw('''SELECT *,core_location.a + core_location.b as dist
    FROM core_location,core_company
    WHERE (core_location.a + core_location.b)<10    
    ORDER BY dist''')
    
  • Thực hiện chọn phụ:

    Company.objects.raw('''SELECT * FROM (
        SELECT *,core_location.a + core_location.b as dist
        FROM core_location,core_company            
    ) as subselect
    WHERE dist<10  
    ORDER BY dist''')
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa các bản sao khỏi một bảng lớn

  2. Tải lên tệp CSV để xử lý cập nhật trạng thái và chèn bản ghi mới

  3. Làm thế nào để đặt một varchar có độ dài không giới hạn?

  4. Hàm TRIM của MySQL không ngắt dòng hoặc trả về xuống dòng?

  5. Nhược điểm của việc lưu trữ hình ảnh trong Cơ sở dữ liệu?