### mysql 使用in查询的语法
1. 写法:
```golang
AND a.shop_id IN (70,79,80,81) //正确写法:可以获取多个值
AND a.shop_id IN ("70,79,80,81") //错误写法,智能获取一个值,默认第一个70
```
![image.png](https://static.studygolang.com/191011/bb2242e62b23b16d3fe2b4ef92f6d441.png)
***
***
![image.png](https://static.studygolang.com/191011/e5973b087f20339f826286b462e558d7.png)
2. 使用xorm,进行原生sql拼接
```golang
`AND a.shop_id IN ( ? )`
//...
ml,err=xorm.Engine().Query(sqlm+in+order, uid,idsStr) // 这样写,会将in 里面的值用""包装(字符串),sql 最终就变成上面sql2
```
3. 解决方式 : 直接进行拼接,不用?进行占位符处理
```golang
`AND a.shop_id IN (`+strings.Join(idsStr,",")+`)`
//直接这样拼接,会得到sql1,得到正确结果
```
有疑问加站长微信联系(非本文作者)