为了账号安全,请及时绑定邮箱和手机立即绑定

处理ID上的MYSQL SELECT查询的更好方法,该ID也可以为n

处理ID上的MYSQL SELECT查询的更好方法,该ID也可以为n

Go
斯蒂芬大帝 2022-08-15 19:41:59
有没有更好的方法来处理ID上的MYSQL SELECT查询,该ID也可以为n。下面的代码有效,但我想把它放在一个查询中。这可能吗?    if parent_id != nil {        err := db.QueryRow("SELECT id FROM category WHERE parent_id = ?", parent_id).Scan(&category_id)        if err != nil {            fmt.Println("ID not found", err)        }    } else {        err := db.QueryRow("SELECT id FROM category WHERE parent_id is NULL").Scan(&category_id)        if err != nil {            fmt.Println("ID not found", err)        }    }
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

您应该能够使用 NULL-safe 等于 to 运算符。


err := db.QueryRow(`SELECT id

    FROM category

    WHERE parent_id <=> ?

`, parent_id).Scan(&category_id)

作为替代方法,您可以在 SQL 中测试在 Go 中传递的参数两次(您必须传递两次):


对列进行简单的相等比较。

检查参数和列是否都是 。NULL

err := db.QueryRow(`SELECT id

    FROM category

    WHERE parent_id = ?

    OR (? IS NULL AND parent_id IS NULL)

`, parent_id, parent_id).Scan(&category_id)


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信