【问题标题】:ruby on rails command equal to data retrieved by this sql queryruby on rails 命令等于此 sql 查询检索到的数据
【发布时间】:2017-09-19 11:38:02
【问题描述】:

有人能说出下面查询的等效命令以在 ruby​​ on rails 控制器中检索

SELECT * FROM Table1 WHERE Table1.principal NOT IN (SELECT principal FROM table2)

【问题讨论】:

  • 你试过什么?
  • 例如ActiveRecord::Base.connection.execute "SELECT * FROM Table1 WHERE Table1.principal NOT IN (SELECT principal FROM table2)".
  • 查看指南 (guides.rubyonrails.org/active_record_querying.html) 如果这没有帮助,请返回并展示您尝试过的内容。

标签: mysql sql ruby-on-rails ruby


【解决方案1】:

你可以试试这样的

Table1.where.not(principal: Table2.pluck(:principal))

【讨论】:

  • 使用#pluck代替all.map,也可以使用where.not代替SQL片段。
  • @pascalbetz 感谢您的建议,我更新了答案。
  • 既然你已经使用了where.not,我会警告说,rails > 5 并添加回低版本的 sql 片段。在我看来,它使这个答案更加完整
【解决方案2】:

试试这个。

Table1.where(["principal not in (?)",Table2.select(:principal)])

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多