使用 Ruby 数组的 SQL 查询 IN

标签 sql ruby-on-rails ruby arrays

我在 ruby​​ 2.0.0 中有一个数组,@temp = [3, 4] 我想在 SQL IN 语句中使用它。所以我想删除括号 ([, ])。

我的 SQL 查询:

SELECT E.id,E.name, CEU.attempt, E.total_mark, CEU.has_attended as attendance, CE.id as categoryexamId, CE.examtype_id as examType, CU.id as categoryuserId, U.name as username

      FROM exams E
      Inner Join categoryexams CE on E.id = CE.exam_id
      Inner Join categoryexamusers CEU on CE.id = CEU.categoryexam_id
      Inner Join categoryusers CU on CEU.categoryuser_id = CU.id
      Inner Join categories C on CE.category_id = C.id
      Inner Join users U on CU.user_id = U.id
      Inner Join examtypes ET on CE.examtype_id = ET.id
      WHERE CE.category_id = #{category_id} AND CEU.has_attended = 1 AND U.id = #{user} AND CE.currentyear = #{academicYear} AND CE.examtype_id = #{examtype}" + (@temp.blank? ? "" : " AND CEU.categoryexam_id NOT IN (#{@temp})") +
      " Group By CE.id;

最佳答案

使用Active Record,在使用“哈希条件”格式时,直接使用数组即可,它会自动将其转换为正确的SQL:

MyModel.where(column: [3, 4])

请参阅有关 Active Record 查询的 Rails 指南 "Subset Conditions" 2.3.3

关于使用 Ruby 数组的 SQL 查询 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301348/

相关文章:

MySql 同一查询的不同执行路径

sql - oracle中select语句中的子查询是如何工作的

ruby-on-rails - 删除分配,未定义方法 `avatar?' 为 nil :NilClass

ruby - 为什么 gems 安装在与我运行的 Ruby 版本不同的目录中?

sql - 为什么我们在进行事务时需要回滚命令或告诉我什么时候使用 "ROLLBACK"合适

sql - 无法执行 msdb.dbo.sp_send_dbmail

javascript - geolocation.getCurrentPosition 晚上失败 -- 如何提供自己的 api key ?

ruby-on-rails - 更新用户的单个属性

ruby-on-rails - Rails 5.1 和 Postgres - 当其中一列是外键时,在两列上添加唯一约束

ruby - 将参数传递给 Ruby 中的传入 block