【go】gorm\xorm\ent多表联查

文章目录

  • [1 gorm](#1 gorm)
  • [2 xorm](#2 xorm)
  • [3 ent](#3 ent)

前言:本文介绍golang三种orm框架联表查询

1 gorm

go 复制代码
type UserTest struct {
	Count     int     `json:"count,omitempty"`
	Type      string  `json:"type,omitempty"`
}
res := []UserTest{}
db.Joins("LEFT JOIN user ON order.user_id = user.id").Find(&res) 

2 xorm

go 复制代码
err := db.Table("user").Select("name as org, count(status) as count").
	Join("LEFT", "order", "user.id= order.user_id").
	In("name", orgNames).
	GroupBy("name").
	OrderBy("count(status) desc").Find(&res)

3 ent

go 复制代码
err := db.User.Query().
	Where(user.CompanyIDIn(companyIds...)).
	GroupBy(user.FieldCompanyID).
	Aggregate(
		func(s *sql.Selector) string {
			t := sql.Table(order.Table)
			s.Join(t).On(s.C(user.FieldID), t.C(order.FieldUserID))
			return sql.As(sql.Count(t.C(order.FieldBandwidth)), "count")
		},
	).Scan(c, &res)

输出:

json 复制代码
[
	{
		"type": "xxx",
		"count": 24
	},
	{
		"type": "yyy",
		"count": 65,
	}
]
相关推荐
sali-tec几秒前
C# 基于halcon的视觉工作流-章69 深度学习-异常值检测
开发语言·图像处理·算法·计算机视觉·c#
leeggco2 分钟前
Batfish Dashboard 项目说明文档
后端
我是唐青枫2 分钟前
深入理解 C#.NET 运算符重载:语法、设计原则与最佳实践
开发语言·c#·.net
qq_124987075326 分钟前
基于springboot健康养老APP的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·微信小程序·毕业设计
张np29 分钟前
java基础-Deque 接口
java·开发语言
柒壹漆32 分钟前
用Python制作一个USB Hid设备数据收发测试工具
开发语言·git·python
LXS_35734 分钟前
Day 16 C++提高之模板
开发语言·c++·笔记·学习方法
盒马盒马36 分钟前
Rust:内部可变性 & 型变
开发语言·后端·rust
沐知全栈开发37 分钟前
XSLT `<value-of>` 元素详解
开发语言
东哥很忙XH43 分钟前
python使用PyQt5开发桌面端串口通信
开发语言·驱动开发·python·qt