这可能是使用Dapper ORM的SELECT * FROM X WHERE id IN(...)的副本
我想要实现:
connection.execute("delete from table where id in @ids", new { ids = new int[]{1,2}});
但它不起作用。我总是得到:错误:42883:运算符不存在:整数=整数[]。
即使我这样做:
connection.Query<a>("select * from a where a_id in @ids", new { ids = new int[] { 12, 13 } })
我得到了同样的例外。我正在使用Npgsql访问postgresql数据库。你能告诉我我做错了什么吗?
以下是第二个语句在数据库中发生的情况:
这是第二个语句的一些日志:
运算符不存在:整数=整数[],字符33
没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
select * from a aid in((array [12,13]):: int4 [])
这是第一个(与上面相同但最后一行不同)
从((array [12,13]):: int4 [])中的a_id删除
我建议你看看Postgres docs Searching in Arrays 。简而言之,您应该使用运算符“ANY”或“ALL”或手动检查列的每个值。
此sql是具有IN子句的查询的等效版本:
delete from table where id = any (@ids)