didi / gendry

a golang library for sql builder
Apache License 2.0
1.62k stars 195 forks source link

where语句中两列数据相互比较,如何正确声明查询条件呢? #141

Closed imdouyu closed 1 year ago

imdouyu commented 1 year ago

SQL SELECT * FROM my_table WHERE column1 > column2

类似这样的sql:

package main

import (
    "fmt"

    "github.com/didi/gendry/builder"
)

// SQL SELECT * FROM my_table WHERE column1 > column2

func main() {
    where := map[string]any{
        "column1 >": "column2",
    }
    sql, args, err := builder.BuildSelect("my_table", where, []string{"id", "name"})
    if err != nil {
        panic("Compile with error:" + err.Error())
    }
    fmt.Println("SQL:", sql)
    fmt.Println("Args:", args)
}

我尝试上述方式发现column2被当作字符串'column2'处理了,预期应该是column2列的值与column1列的值相互比较

caibirdme commented 1 year ago

这个不支持,用NamedQuery吧

imdouyu commented 1 year ago

BuildSelect后续会支持吗,这个感觉更好维护

caibirdme commented 1 year ago

目前没有这个计划

twz915 commented 1 year ago

https://github.com/didi/gendry/pull/147

twz915 commented 1 year ago

已经支持,可以关闭了