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

ActiveRecord lồng nhau SELECT

Tại sao bạn ghép thay vì chọn dựa trên họ và tên? Lựa chọn con sẽ kém hiệu suất hơn nhiều so với truy vấn trực tiếp. Bạn có thể lấy tên đầy đủ bằng cách sử dụng select phạm vi (nó sẽ có thể truy cập theo cách tương tự như các thuộc tính khác):

 Candidate.select("candidates.*, (first_name || ' ' || last_name) AS full_name").
           where(first_name: 'Antonov', last_name: 'Kolganov')

Cập nhật: Nếu bạn thực sự cần viết lại truy vấn trên bằng một lựa chọn con trong FROM mệnh đề ActiveRecord, bạn có thể làm như sau:

Candidate.from("(SELECT (candidates.first_name || ' ' || candidates.last_name) AS full_name, candidates.* FROM candidates) candidates").
          where(full_name: 'Anton Kolganov')

Tức là, nói chung, bạn có thể đặt bất kỳ SQL hợp lệ nào vào các phương thức phạm vi ActiveRecord, bao gồm select , from , v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt PostgreSQL trên OSX để phát triển Rails

  2. Mã hóa postgresql base64

  3. Postgresql chỉ định một truy vấn chọn cho biến trong hàm

  4. Postgres:chọn tổng các giá trị rồi tính tổng lại

  5. Làm cách nào để lấy chuỗi con từ bảng sql?