Golang中的MySQL空值

时间:2019-05-23 18:12:26

标签: mysql go

您如何通过MySQL和Go解决围绕LEFT JOIN和null值的问题?

例如,我有两个表orderorder_item。所有列均具有not null属性。一个订单可以有0个或多个order_items。没有任何order_items的订单的简单选择,左联接查询失败Row.Scan(),因为order_item列返回为null:

SELECT * FROM `order`
LEFT JOIN `order_item` USING (order_id)
WHERE `order`.order_id = '123'

我可以看到三种解决方案,但我认为没有一种是真的很好。

  1. 使用COALESCE / IFNULL =>令人讨厌,因为我选择的查询部分是自动生成的。
  2. 使用mysql中的空值go lib =>这将意味着order_item结构中的每个值都属于这些类型。
  3. 将查询拆分为2 =>如果我想要包含order_items的50个订单的列表,那就是51个查询。

您还有其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以使用选项2,但不必扫描结构并不必更改结构类型,而可以扫描具有可空数据类型的临时变量,并根据这些变量的有效性将其值复制到结构中。非空类型。