添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
淡定的匕首  ·  linux中read命令数组 • ...·  1 月前    · 
独立的滑板  ·  What is Kafka ...·  2 月前    · 
无邪的钢笔  ·  How to check is the ...·  5 月前    · 

さて、今回は PostgreSQL で遭遇する、PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list の解消方法について、
ブログに残してみたいと思います。

以下のようなクエリがあると、must appear in select list のエラーが発生します。

  scope :error_distinct, -> () {
    query = <<-SQL.squish
      SELECT DISTINCT to_char(emp.created_at, 'YYYY-MM-DD')
      FROM employees AS emp
      LEFT JOIN orders ON orders.employee_id = emp.id
      ORDER BY created_at
    find_by_sql(query)

to_charで指定した列はそのままORDER BY で使えないんですね、、、

この場合はto_charで算出した列に AS 句で別名を付ければOKです。

  scope :success_distinct, -> () {
    query = <<-SQL.squish
      SELECT DISTINCT to_char(emp.created_at, 'YYYY-MM-DD') AS chared_created_at
      FROM employees AS emp
      LEFT JOIN orders ON orders.employee_id = emp.id
      ORDER BY chared_created_at
    find_by_sql(query)

これで問題なく処理できます。