sql >> データベース >  >> RDS >> PostgreSQL

ActiveRecordネストされたSELECT

    姓名に基づいて選択するのではなく、なぜ連結するのですか?副選択は、直接クエリよりもパフォーマンスが大幅に低下します。 selectを使用してフルネームを取得できます スコープ(他の属性と同じ方法でアクセスできます):

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

    更新: FROMの副選択を使用して、上記のクエリを本当に書き直す必要がある場合 ActiveRecordの句を使用すると、次のことができます。

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

    つまり、一般的に、selectを含む、任意の有効なSQLをActiveRecordスコープメソッドに入れることができます。 、from 、など。



    1. MySqlCommand Prepare()がIsPreparedをtrueに設定することはありません

    2. R12.2への段階的なアップグレードプロセスパート-3のアップグレード

    3. ユーザーごとに1つのコメントだけの最後のコメントを表示する

    4. mySQLの日付をJavaの現在の日付と比較するにはどうすればよいですか?