ruby-on-rails – 活动记录 – 其中IN包含多列
发布时间:2020-12-17 03:57:00 所属栏目:百科 来源:网络整理
导读:我有一个查询需要从一个完全满足两列要求的表中获取.所以,如果我有用户表,列,年龄和分数. SELECT * FROM users where (age,score) IN ((5,6),(9,12),(22,44)..) 在我的网络应用程序中,我从ajax请求得到这对,并且数量可能非常大.如何为此构建Active Record查
我有一个查询需要从一个完全满足两列要求的表中获取.所以,如果我有用户表,列,年龄和分数.
SELECT * FROM users where (age,score) IN ((5,6),(9,12),(22,44)..) 在我的网络应用程序中,我从ajax请求得到这对,并且数量可能非常大.如何为此构建Active Record查询? 我正在研究postgres数据库 解决方法
理想情况下,我们将根据输入构建一个查询字符串.例如
ages_and_scores = [ [5,6],[9,12],[22,44] ] query_string = ages_and_scores.map do |pair| "(age = #{pair[0]} AND score = #{pair[1]})" end.join(" OR ") # => (age = 5 AND score = 6) OR (age = 9 AND score = 12) OR (age = 22 AND score = 44) 最后,您的查询将是 User.where(query_string) 您可以更正如何构建查询字符串的逻辑,因为ages_and_scores与我的示例的格式不同. 起色 ages_and_scores = [ [5,44] ] query_params = [] query_template = ages_and_scores.map{ |_| "(age = ? AND score = ?)" }.join(" OR ") # => (age = ? AND score = ?) OR (age = ? AND score = ?) OR (age = ? AND score = ?) User.where(query_template,*ages_and_scores.flatten) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |