Golang sqlx 使用sql语句 Where in 解决办法

Oralie ·
更新时间:2024-09-20
· 881 次阅读

方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样:

新建方法

func placeholders(n int) string { var b strings.Builder for i := 0; i 0 { b.WriteString("?") } return b.String() }

 调用方法:

var ids []interface{} err := c.BindJSON(&ids) query := fmt.Sprintf("delete from device where id in (%s)", placeholders(len(ids))) _, err = models.DB.Exec(query, ids...) ...

方法2、 sqlx内置了一个In()方法用于处理这种情况,可以使得对in的处理十分优雅。
其实该方法的实现和我们方法1的处理原理类似。

import ( "github.com/jmoiron/sqlx" ) var ids []int err := c.BindJSON(&ids) ... query1, args, err := sqlx.In("delete from device where id in (?)", ids) _, err = models.DB.Exec(query1, args ...) ...
作者:d294083434



sql语句 WHERE IN golang

需要 登录 后方可回复, 如果你还没有账号请 注册新账号