我有一个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的错误消失了,但现在分组不起作用,我最终得到重复。
答案 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")
这将返回一个数组数组,其元素与所选列的顺序相匹配。