sql >> Database teknologi >  >> RDS >> PostgreSQL

ActiveRecord indlejret SELECT

Hvorfor sammenkæder du i stedet for at vælge baseret på for- og efternavn? Undervalget vil være meget mindre effektivt end direkte forespørgsel. Du kan få det fulde navn ved at bruge select omfang (det vil være tilgængeligt på samme måde som andre attributter):

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

Opdatering: Hvis du virkelig havde brug for at omskrive ovenstående forespørgsel med et undervalg i FROM klausul til ActiveRecord, kan du gøre følgende:

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

Det vil sige, generelt kan du indsætte enhver gyldig SQL i ActiveRecord-omfangsmetoderne, inklusive select , from osv.



  1. hvordan man ekko specialtegn som åäö med utf8

  2. Bruger du cassandra i stedet for memcache?

  3. Oracle - Hvordan får jeg den faktiske størrelse af en specifik RÆKKE?

  4. ORA-02298 Forældrenøgler blev ikke fundet?