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

有没有更好的方法来处理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)

        }

    }


斯蒂芬大帝
浏览 100回答 1
1回答

PIPIONE

您应该能够使用 NULL-safe 等于 to 运算符。err := db.QueryRow(`SELECT id&nbsp; &nbsp; FROM category&nbsp; &nbsp; WHERE parent_id <=> ?`, parent_id).Scan(&category_id)作为替代方法,您可以在 SQL 中测试在 Go 中传递的参数两次(您必须传递两次):对列进行简单的相等比较。检查参数和列是否都是 。NULLerr := db.QueryRow(`SELECT id&nbsp; &nbsp; FROM category&nbsp; &nbsp; WHERE parent_id = ?&nbsp; &nbsp; OR (? IS NULL AND parent_id IS NULL)`, parent_id, parent_id).Scan(&category_id)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go