在不相关列上的Postgresql错误中选择Distinct
我正在努力编写一个SQL语句来实现以下功能:获取一组用户最近完成的评估在不相关列上的Postgresql错误中选择Distinct,sql,ruby-on-rails,postgresql,ruby-on-rails-4,postgresql-9.4,Sql,Ruby On Rails,Postgresql,Ruby On Rails 4,Postgresql 9.4,我正在努力编写一个SQL语句来实现以下功能:获取一组用户最近完成的评估 每个用户一个(不同的用户id) 所选用户组的(user\u id在数组中) 仅完成评估(type\u name不为空) 包含所有字段(稍后将使用) 最近的尝试: SELECT DISTINCT(user_id), assessments.* FROM assessments WHERE user_id IN (1,2,3,4,5,10) AND type_name IS NOT NULL ORDER BY c
- 每个用户一个(不同的
)用户id
- 所选用户组的(
在数组中)user\u id
- 仅完成评估(
不为空)type\u name
- 包含所有字段(稍后将使用)
SELECT DISTINCT(user_id), assessments.*
FROM assessments
WHERE
user_id IN (1,2,3,4,5,10)
AND type_name IS NOT NULL
ORDER BY
created_at DESC,
user_id DESC
当前错误:
无法识别json类型的相等运算符
关于:
我已经浏览了很多不同版本的文章,得到了各种各样的错误,但是我认为这一个应该可以工作,但是它似乎试图根据所有的列来区分,而不仅仅是user\u id
我真的希望它能在Rails中工作,但由于我不能做到这一点,我想先让普通SQL工作
更新
部分问题可能是我有关于评估的JSON列。但由于我只是在user\u id
上使用distinct,它应该忽略那些JSON列试试以下方法:
Assesment.uniq(:user_id)
.where(iuser_id: [1, 2, 3])
.where
.not(type_name: nil)
更新:
由于问题确实存在于其他列中,因此我建议将所有json
列转换为jsonb
(第9.4页)
类AlterJsonbToJsonAndBack
我得到了与之前相同的错误,我将更新问题以提供一些更相关的dataRails似乎忽略了
uniq
中的参数。我还尝试了distinct
,但它转换成的查询是:从“assessments”中选择distinct“assessments”。*其中的“assessments”(评估),(1,2,3)中的“user_id”和(“assessments”。“type_name”不为空)按“assessments”(评估)排序。“created_at”DESC
Assesment.uniq(:user_id)
.where(iuser_id: [1, 2, 3])
.where
.not(type_name: nil)
class AlterJsonbToJsonAndBack < ActiveRecord::Migration
def up
change_column :assessments, :column_name, 'jsonb USING CAST(column_name AS jsonb)'
end
def down
change_column :assessments, :column_name, 'json USING CAST(column_name AS json)'
end
end