[英]Rails SQL query, passing array of ids to sql WHERE…IN clause
处理 HABTM 关系并需要编写我可以通过ActiveRecord::Base.connection.execute(my_query)
运行的 sql 查询字符串
SQL WHERE...IN 子句需要一个整数 id 数组,如下所示: "DELETE from contacts_tags where tag_id = 99 AND contact_id IN (1, 2, 3, 4)
我有一个要传递到 IN 子句中的 id 数组,但似乎无法以 SQL 接受的方式对其进行格式化。
ids_for_delete = [1, 2, 3, 4]
my_query = "DELETE from contacts_tags where tag_id = 99 AND contact_id IN (#{ids_for_delete})"
ActiveRecord::Base.connection.execute(my_query)
#=> There is an error in your SQL syntax.
将 id 数组传递给 SQL WHERE 子句的正确方法是什么?
尝试:
my_query = "DELETE from contacts_tags where tag_id = 99 AND contact_id IN (#{ids_for_delete.join(', ')})"
使用方法 join 生成像 "1, 2, 3, 4.." 这样的字符串
您还可以对数组值使用 ANY 操作:
DELETE FROM contacts_tags WHERE tag_id = 99 AND contact_id = ANY('{ #{ids_for_delete.join(",")} }'::int[])
即使您传递一个空数组,它也不会中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.