mysql - Golang 中的 MySQL 空值
问题描述
LEFT JOIN
你是如何用 MySQL 和 Go解决 's 和 null 值的问题的?
例如,我有两个表order
和order_item
. 所有列都有该not null
属性。一个订单可以有 0 个或多个 order_items。没有任何 order_item 的订单的简单选择左连接查询失败 Row.Scan()
,因为 order_item 列返回为空:
SELECT * FROM `order`
LEFT JOIN `order_item` USING (order_id)
WHERE `order`.order_id = '123'
我可以看到三个解决方案,我认为没有一个非常好:
- 使用
COALESCE
/IFNULL
=> 烦人,因为我的查询部分是自动生成的。 - 使用 mysql go lib => 中的空值这意味着我的 order_item 结构中的每个值都将属于这些类型。
- 将查询拆分为 2 => 如果我想要一个包含 50 个带有 order_items 的订单的列表,那将是 51 个查询。
您还有其他解决方案吗?
解决方案
您可以使用选项 2,但不必扫描到您的结构并且必须更改您的结构的类型,您可以扫描到具有可为空数据类型的临时变量,并根据这些变量的有效性,将它们的值复制到您的不可为空的结构中类型。
推荐阅读
- wordpress - 在移动设备中单击按钮打开 YouTube 视频
- excel - 复制时,VBA 代码在 47 个几乎相同的工作表中的 4 个上始终崩溃。为什么?
- pandas - Pandas read_html how to drop Index?
- python - 是否有检测当前电池百分比的python函数?
- reporting-services - SSRS:如何将我的类别分组到不同的行?
- android - Flutter 在哪里放置 Google FCM 通知的声音和图像图标
- java - JEditorPane 中带有超链接的本地 HTML 将被方法拦截
- select - 我的非阻塞 UDP 连接 select() 函数总是返回 0
- asp.net-mvc - Web API 令牌认证与自定义令牌认证
- python - Selenium cant click element