如何针对多个值对 SQL 列执行 where 查询?
How do I do a where query on a SQL column against multiple values?
我的查询是这样的:
Connection.where("invited_user_id = :user_a_id AND inviter_user_id = :user_b_id", user_a_id: self.inviter.try(:id), user_b_id: self.invited.try(:id)).exists?
我想做的基本上是根据多个选项检查 invited_user_id
,例如类似于 invited_user_id = [:user1, :user2]
。但那是行不通的。
如何检查 invited_user_id
列中的值是否在变量 :user1
、:user2
或任何其他变量中。
如果不使用不那么干的显式 OR
方法,这是否可能?
where
的散列形式接受值数组,因此:
Connection.where(invited_user_id: [1, 2, 3, 4, 5])
这将找到 invited_user_id
是数组中列出的任何值的所有记录。
切勿将值直接放入查询中,这不安全。使用 ?
运算符参数化您的查询。
invited_user_ids = [:user1, :user2]
Connection.where("invited_user_id IN (?)", invited_user_ids)
我的查询是这样的:
Connection.where("invited_user_id = :user_a_id AND inviter_user_id = :user_b_id", user_a_id: self.inviter.try(:id), user_b_id: self.invited.try(:id)).exists?
我想做的基本上是根据多个选项检查 invited_user_id
,例如类似于 invited_user_id = [:user1, :user2]
。但那是行不通的。
如何检查 invited_user_id
列中的值是否在变量 :user1
、:user2
或任何其他变量中。
如果不使用不那么干的显式 OR
方法,这是否可能?
where
的散列形式接受值数组,因此:
Connection.where(invited_user_id: [1, 2, 3, 4, 5])
这将找到 invited_user_id
是数组中列出的任何值的所有记录。
切勿将值直接放入查询中,这不安全。使用 ?
运算符参数化您的查询。
invited_user_ids = [:user1, :user2]
Connection.where("invited_user_id IN (?)", invited_user_ids)