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

Rails 3クエリ:「select」と「order」の使用中にエラーが発生する

    このSQLFIDDLE を使用してSQLをテストできます。 。

    SqliteとMySqlのみがこの使用法をサポートしていますが、他の使用法はサポートしていません。

    このpostgresqlドキュメント を参照してください 。

    この機能の制限は、UNION、INTERSECT、またはEXCEPT句の結果に適用されるORDER BY句は、式ではなく、出力列の名前または番号のみを指定できることです。

    あなたの場合、uniqを使用する必要はなく、すべてのユーザーIDはすでに区別されているので、これを試してみませんか:

    User.order("email DESC").pluck(:id)
    

    IDが重複していると仮定すると、DBの代わりにrubyで一意にすることができます。

    User.order("email DESC").pluck(:id).uniq
    

    このスクリプトは、異なるSQLを生成することはありません。このuniq 引き抜いた後はArray#uniq メソッド。




    1. ORDER BYをidから別のインデックス付き列(LIMITが低い)に変更すると、莫大なコストがかかります

    2. URLのデータ型

    3. MySQL-検索されたキーワードを囲む単語を検索する

    4. PostreSQLでデータのバージョン管理を実装する方法