From d6fd283f68072691e18bcb51173cd4386deb1e2f Mon Sep 17 00:00:00 2001 From: maxilozoz <2802146520@qq.com> Date: Mon, 19 Oct 2020 19:47:17 +0800 Subject: [PATCH] dialect/sql: add support for selector in the notIn predicate (#861) * `notIn` support Selector like `in` * `notIn` args check --- dialect/sql/builder.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dialect/sql/builder.go b/dialect/sql/builder.go index 4ae0570ab..88c57a937 100644 --- a/dialect/sql/builder.go +++ b/dialect/sql/builder.go @@ -1054,10 +1054,17 @@ func NotIn(col string, args ...interface{}) *Predicate { // NotIn appends the `Not IN` predicate. func (p *Predicate) NotIn(col string, args ...interface{}) *Predicate { + if len(args) == 0 { + return p + } return p.Append(func(b *Builder) { b.Ident(col).WriteOp(OpNotIn) b.Nested(func(b *Builder) { - b.Args(args...) + if s, ok := args[0].(*Selector); ok { + b.Join(s) + } else { + b.Args(args...) + } }) }) }