python多表联合查询_关于gorm多表联合查询(left join)的小记-Go语言中文社区

本文介绍了如何在Golang使用GORM库进行多表联合查询,特别是LEFT JOIN操作。通过创建Go结构体映射数据库表,并详细展示了如何定义查询语句,包括设置别名和添加WHERE条件。示例代码涵盖了从基本的联合查询到带条件的查询,以及如何处理查询结果。
摘要由CSDN通过智能技术生成

Golang很流行,但是有些方面资料很少而且不详实,譬如:gorm的联合查询,当然,也不推荐复杂语句使用orm模型。

现将自己总结的写法和遇到的坑记录如下:

Golang要求使用“驼峰命名法”,比如systemId,因为我以前用的是Python,使用Django的orm序列化后返回的参数和数据库表字段一致,基于这个不适合Go的思路,我将表字段也建成了systemId,和struct映射参数相同。(其实表字段应该命名为system_id)

一、下面建两张表,用于联合查询(以left join示例)

MySQL > desc go_system_info;

+——————+——————-+———+——-+——————-+————————+

| Field | Type | Null | Key | Default | Extra |

+——————+——————-+———+——-+——————-+————————+

| id | int(11) | NO | PRI | NULL | auto_increment |

| systemId | varchar(30) | NO | MUL | NULL | |

| systemName | varchar(50) | NO | | defaultNull | |

+——————+——————-+———+——-+——————-+————————+

3 rows in set (0.01 sec)

MySQL > desc go_service_info;

+——————-+——————-+———+——-+——————-+————————+

| Field | Type | Null | Key | Default | Extra |

+——————-+——————-+———+——-+——————-+————————+

| id | int(11) | NO | PRI | NULL | auto_increment |

| systemId | varchar(30) | NO | MUL | NULL | |

| serviceId | varchar(50) | NO | MUL | defaultNull | |

| serviceName | varchar(50) | NO | | defaultNull | |

+——————-+——————-+———+——-+——————-+————————+

4 rows in set (0.00 sec)

MySQL >

二、表建好后,我们来定义表结构体:

type GoSystemInfo struct {

ID int `gorm:"primary_key"`

SystemId string `gorm:"column:systemId;type:varchar(30);not null;index:SystemId"`

SystemName string `gorm:"column:systemName;type:varchar(50);not null;default:'defaultNull'"`

}

type GoServiceInfo struct {

ID int `gorm:"primary_key"`

SystemId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值