【问题标题】:From SQL to Rails Active Record从 SQL 到 Rails 活动记录
【发布时间】:2021-11-09 04:04:59
【问题描述】:

如何将这个 SQL 查询放入 Rails ActiveRecord?

选择对象.*, (objects.value)->>0 FROM "users", jsonb_each(hit->'opportunity') objects WHERE objects.key::text ~ '^[0-9]{0,4}_pct$' and ((objects.value)->>0) ::数字 >= 0.5

【问题讨论】:

  • 这看起来只是查询的一半,我们缺少任何尝试自己实际解决问题的尝试,以及有关架构、模型和实际预期结果的任何信息成为。 idownvotedbecau.se/noattempt
  • 对不起,这不是查询的一半。这是我使用的功能查询。我只是不知道如何将它放入 ActiveRecord 查询中。
  • 是的,但是您尝试过什么以及您真正想要对结果做什么?无论结果如何映射到您的模型,您都非常不清楚。由于您使用的是一系列 Postgres 特定功能,因此您很可能必须在大部分查询中使用字符串。

标签: sql ruby-on-rails activerecord


【解决方案1】:

你可以这样做:

User.select("REPLACE(objects.key, '_pct', '' )::int AS key")
    .joins("inner join jsonb_each(users.hit->'opportunity') AS objects ON true")
    .where("objects.key::text ~ '^[0-9]{0,4}_pct$' AND ((objects.value)->>0)::numeric >= 0.5")

【讨论】:

  • 像魅力一样工作! o/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 1970-01-01
  • 2013-02-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多