示例表架构:
create table t1(
col1 varchar(20),
col2 varchar(20)
);
要求:获取与数组中存在的任何元组(col1,col2)匹配的行。
SQL:
select * from t1 where (col1, col2) in (('c11', 'c12'), ('c21', 'c22'));
我想使用带有“github.com/lib/pq”驱动程序的“database/sql”包在Go中编写这个查询,这就是我面临的问题。
我可以轻松地为单列 IN/ANY 查询执行此操作。
例如,以下查询
select * from t1 where col1 in ('c11', 'c21');
可以通过以下代码片段来实现:
args := []string{"c11", "c21}
conn.Exec(`select * from t1 where col1 = any($1)`, pq.Array(args))
但是,我不能对多列查询使用类似的方法。我尝试将 等作为参数传递pq.Array([][]string),pq.Array([]*pq.StringArray)但它们不起作用,并获取以下错误:
input of anonymous composite types is not implemented
将不胜感激任何帮助。
一只斗牛犬
相关分类