RT.是有这样的有一个需求是,要求我过滤掉几组数据
第一条:name:zhangsan,age:10
第二条:name:lisi,age:19
数据的条数是动态的根据前端传的数据确定
假设数据库是这样的
![WX20231220-155434@2x.png](https://static.golangjob.cn/231220/68f132d0da02050349ecddff99cb0b83.png)
我需要将不等与“name:zhangsan,age:10和name:lisi,age:19”的数据给找出来。
自己写的时候发现不能用where name != zhangsan and age!= 19这种,系统会先过滤掉所有name等于zhangsan的数据再过滤所有age等于19的,但是这样就会把id = 4的那条数据也过滤掉。后面发现可以用where not (name != zhangsan and age!= 19)这种,也就是通过.Not()方法实现,但是条件会有多条。
查询语句也不能放在循环里面,要求不使用from子查询实。我原本想通过map存储多组条件来实现,但是没有成功。现在想请教一下各位怎么通过gorm实现这种过滤查询呢?万分感谢各位!
**感谢各位,昨天解决了。最后是用这种链式拼接的方法结解决的**
```
query := Db.Model(&xxxx)
for _, b := range findNode {
query = query.Not("xxx = ? and xxx = ?", b.xxx,b.xxx)
}
err := query.Debug().Where("xxx = xxxx").Find(&xxx)
```
#5
更多评论
用in应该可以叭, where name not in ('111','222') and age not in (19 , 10)
#1
之前试过了,不能用not in 。比如这里你name not in ( 'zhangsan' ) age not in ( '10' )。他会过滤掉另外一条name : zhangsan,age:19的这一条。后面发现where not (name = zhangsan and age = 19) 这样可以,但是过滤条件是动态的可能会有很多条,就不知道gorm里面可以怎么使用才能达到要求。
#2