不区分大小写的GROUP BY以及主键

时间:2015-07-16 18:25:43

标签: ruby-on-rails postgresql activerecord

我有一个Rails应用,我希望根据用户输入的字符串检索一些搜索建议,比如foo

简而言之,我想从Postgres数据库中选择与字符串foo%匹配的所有先前搜索,将它们分组在query上(不区分大小写)并包括计算{{{的次数的列已搜索到1}}。这是我的SQL:

query

这给了我Rails的错误,因为我没有在自定义选择中包含SELECT MIN(searches.query),COUNT(*) AS hits FROM searches GROUP BY LOWER(query) ORDER BY hits DESC; 。但是,如果我将查询更改为

id

Rails的错误消失了,但现在分组不起作用,我最终得到重复。

1 个答案:

答案 0 :(得分:0)

我想你想要select_rows

Search.connection.select_rows("SELECT MIN(searches.query),
                               COUNT(*) AS hits 
                               FROM searches 
                               GROUP BY LOWER(query) 
                               ORDER BY hits DESC")

这将返回一个数组数组,其元素与所选列的顺序相匹配。