我试图使用pq驱动程序在Go中对PostgreSQL数据库执行以下查询:
SELECT COUNT(id)
FROM tags
WHERE id IN (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
在1, 2, 3切片处传递的位置tags := []string{"1", "2", "3"}.
我尝试了很多不同的东西,比如:
s := "(" + strings.Join(tags, ",") + ")"
if err := Db.QueryRow(`
SELECT COUNT(id)
FROM tags
WHERE id IN $1`, s,
).Scan(&num); err != nil {
log.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
结果pq: syntax error at or near "$1".我也试过了
if err := Db.QueryRow(`
SELECT COUNT(id)
FROM tags
WHERE id IN ($1)`, strings.Join(stringTagIds, ","),
).Scan(&num); err != nil …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行如下查询,但只有第一个id值返回:-
select * from `table` where table`.`id` in ('1', '2', '3', '4', '5', '6', '7', '9', '11', '13', '14', '15', '17') and `table`.`deleted_at` is null
Run Code Online (Sandbox Code Playgroud)
我已经完成以下工作:
var aID = make([]string, 0)
var in india // india is struct
for rows.Next() {
cook := rows.Scan(&in.ID)
aID = append(aID, strconv.Itoa(in.ID))
}
asID = strings.Join(aID, ",")
anotherRow,err := db.Query("SELECT * from table2 where id in (?)", asID)
if err != nil { fmt.Printf("Error: ", err) }
// ... Other line follows up with …Run Code Online (Sandbox Code Playgroud) 注意:这是一个类似但不重复的问题How to use sqlx to query mysql IN a slice? 。我要的是Rust 的。
这就是我尝试做的事情。
let v = vec![..];
sqlx::query("SELECT something FROM table WHERE column IN (?)").bind(v)
...
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误
the trait bound `std::vec::Vec<u64>: sqlx::Encode<'_, _>` is not satisfied
Run Code Online (Sandbox Code Playgroud)