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 您可以使用 => select h -> 'a',count(*) from with_hstore group by h -> 'a'; ?column? | count ----------+------- | 3 2 | 1 6 | 1 b | 1 请注意,缺少的键和NULL值最终在这里显示相同.您甚至可以使用 => 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')")... ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |