作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如何通过 hstore 属性对查询结果进行排序?
@items = Item.includes(:product).order('products.properties @> hstore("platform")')
原因
PG::Error: ERROR: column "platform" does not exist
LINE 1: ...oduct_id" ORDER BY products.properties @> hstore("platform"...
platform
是一个hstore键,存放在properties列中,是一个hstore类型。
最佳答案
双引号用于在 PostgreSQL(以及其他遵循该标准的数据库)中引用标识符(例如表名和列名)。所以当你说:
hstore("platform")
PostgreSQL 将 "platform"
视为带引号的列名称,并且由于没有 platform
列,因此您会收到错误消息。
标准SQL中的字符串用单引号引起来,你想说:
.order("products.properties @> hstore('platform')")
这可能仍然会失败,hstore('platform')
没有多大意义,在这里使用 @>
也没有意义; a @> b
意味着
does the hstore
a
contain the hstoreb
如果您尝试对 properties
hstore 中 'platform'
键的值进行排序,那么您需要使用 ->
像这样查找 'platform'
键:
.order("products.properties -> 'platform'")
关于ruby-on-rails - 如何在 Rails 4 中通过 hstore 属性对结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16284948/
我是一名优秀的程序员,十分优秀!