加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用Hstore密钥对ActiveRecord查询使用gro

发布时间:2020-12-17 01:46:54 所属栏目:百科 来源:网络整理
导读:我正在研究RoR应用程序.我使用Postgres和Hstore.我想使用Hstore密钥使用组查询.如何才能做到这一点? 解决方法 是的,当然可以. GROUP BY子句是一个非常通用的工具,因此您可以按照您喜欢的任何表达式进行分组.所以,给出这样的数据: = select * from with_hst
我正在研究RoR应用程序.我使用Postgres和Hstore.我想使用Hstore密钥使用组查询.如何才能做到这一点?

解决方法

是的,当然可以. GROUP BY子句是一个非常通用的工具,因此您可以按照您喜欢的任何表达式进行分组.所以,给出这样的数据:

=> select * from with_hstore order by id;
 id |         h          
----+--------------------
  1 | "a"=>"6"
  2 | "a"=>"2"
  3 | "b"=>"1"
  4 | "a"=>"b"
  5 | "x"=>"z","y"=>"6"
  6 | "a"=>NULL

您可以使用h -> key按键的值进行分组:

=> select h -> 'a',count(*) from with_hstore group by h -> 'a';
 ?column? | count 
----------+-------
          |     3
 2        |     1
 6        |     1
 b        |     1

请注意,缺少的键和NULL值最终在这里显示相同.您甚至可以使用exist按键存在分组:

=> select exist(h,'a'),count(*) from with_hstore group by exist(h,'a');
 exist | count 
-------+-------
 f     |     2
 t     |     4

您不希望分组依据(h – >’a’)不为null,因为您可以使用NULL值,该测试不会区分显式NULL和没有密钥的hstore;当然,这可能是你想要的,所以也许你想要分组(h – >’a’)不是空的.

通过将组条件作为SQL片段传递,ActiveRecord将允许您按数据库可以处理的任何内容进行分组:

Model.group("h -> 'a'")...
Model.group("exist(h,'a')")...
...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读