有没有更好的方法来处理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)
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消