PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

ActiveRecord verschachtelte SELECT

Warum verketten Sie, anstatt anhand des Vor- und Nachnamens auszuwählen? Die Unterauswahl ist viel weniger leistungsfähig als die direkte Abfrage. Sie können den vollständigen Namen mit select erhalten Gültigkeitsbereich (es wird auf die gleiche Weise wie andere Attribute zugänglich sein):

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

Aktualisierung: Wenn Sie die obige Abfrage wirklich mit einer Unterauswahl im FROM umschreiben müssten -Klausel zu ActiveRecord können Sie Folgendes tun:

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

Das heißt, im Allgemeinen können Sie jedes gültige SQL in die Methoden des ActiveRecord-Bereichs einfügen, einschließlich select , from usw.