xorm 使用原生sql 进行in 查询踩坑笔记

18393910396 · · 3297 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

### 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,得到正确结果 ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3297 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传