【问题标题】:get multiple records in one query in ActiveRecord在 ActiveRecord 的一个查询中获取多条记录
【发布时间】:2015-01-27 20:39:25
【问题描述】:

假设我有一张猫桌,每只猫都有独特的颜色。是否有一种 activerecord 方法可以用来在一个查询中获取红猫和蓝猫。我的目标是更快的查询,而不是使用 Cat.where(color: red) 单独查找每个,然后使用 blue 做同样的事情。

【问题讨论】:

    标签: mysql ruby-on-rails ruby activerecord rails-activerecord


    【解决方案1】:

    你可以这样做:

    Cat.where(color: ['red', 'blue'])
    

    这将生成 SQL 查询:

    SELECT cats.* FROM cats WHERE cats.color IN ('red', 'blue')

    【讨论】:

    • 谢谢,我一开始是这样尝试的,但不知道数组中需要的值。
    【解决方案2】:
    Cat.where(color: 'red').or.where(color: 'blue')
    

    Cat.where("color = ? OR color = ?", "red", "blue")
    

    Cat.where(color: ["red", "blue"])
    

    【讨论】:

      【解决方案3】:

      研究JOIN声明

      你也可以在 where 中使用OR

      where (color='blue' OR color='green')
      

      检查:

      Join statement - toturialspoint.com

      OR and AND expression

      【讨论】:

      • 拜托,do not link to w3schools,因为它提供的建议通常不完整、具有误导性,或者危险地过时。此外,JOIN 并非如此。
      • @tadman 介意删除负面影响吗?我正在尽我最大的努力能够再次提问。很久以前就修好了。
      • 我并不想在这里过于苛刻,但还有另外两个很好的答案直截了当。 JOIN 在这里不是问题。有时我们都会错过目标。只要删除你的答案,除非你能想出一个比另一个更好的答案,或者至少证明JOIN 可能是一个因素,因为不清楚你在做什么。这没什么大不了的,没有造成任何伤害,只是保持事物整洁的问题。我不得不删除许多错误的开始答案。如果你这样做,反对票就会消失。
      猜你喜欢
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多