FreeSql (十九)多表查询
多表查询,常用的有联表 LeftJoin/InnerJoin/RightJoin ,这三个方法在上篇文章已经介绍过。
除了联表,还有子查询 Where Exists,和 Select 子表:
IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10").Build();[Table(Name = "tb_topic")]
class Topic {[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public int TestTypeInfoGuid { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}
子表 Exists
var sql2222 = fsql.Select<Topic>().Where(a => fsql.Select<Topic>().Where(b => b.Id == a.Id).Any()).ToList();
// SELECT a.`Id`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
// FROM `xxx` a
// WHERE (exists(SELECT 1
// FROM `xxx` b
// WHERE (b.`Id` = a.`Id`)))//两级相同的子表查询
sql2222 = fsql.Select<Topic>().Where(a =>fsql.Select<Topic>().Where(b => b.Id == a.Id && fsql.Select<Topic>().Where(c => c.Id == b.Id).Where(d => d.Id == a.Id).Where(e => e.Id == b.Id).Offset(a.Id).Any()).Any()
).ToList();
// SELECT a.`Id`, a.`TypeGuid`, a.`Title`, a.`CreateTime`
// FROM `xxx` a
// WHERE (exists(SELECT 1
// FROM `xxx` b
// WHERE (b.`Id` = a.`Id` AND exists(SELECT 1
// FROM `xxx` c
// WHERE (c.`Id` = b.`Id`) AND (c.`Id` = a.`Id`) AND (c.`Id` = b.`Id`)
// limit 0,1))
// limit 0,1))
子表 First/Count/Sum/Max/Min/Avg
var subquery = fsql.Select<Topic>().ToSql(a => new {all = a,first = fsql.Select<Child>().Where(b => b.ParentId == a.Id).First(b => b.Id),count = fsql.Select<Child>().Where(b => b.ParentId == a.Id).Count(),sum = fsql.Select<Child>().Where(b => b.ParentId == a.Id).Sum(b => b.Score),max = fsql.Select<Child>().Where(b => b.ParentId == a.Id).Max(b => b.Score),min = fsql.Select<Child>().Where(b => b.ParentId == a.Id).Min(b => b.Score),avg = fsql.Select<Child>().Where(b => b.ParentId == a.Id).Avg(b => b.Score)
});
系列文章导航
(一)入门
(二)自动迁移实体
(三)实体特性
(四)实体特性 Fluent Api
(五)插入数据
(六)批量插入数据
(七)插入数据时忽略列
(八)插入数据时指定列
(九)删除数据
(十)更新数据
(十一)更新数据 Where
(十二)更新数据时指定列
(十三)更新数据时忽略列
(十四)批量更新数据
(十五)查询数据
(十六)分页查询
(十七)联表查询
(十八)导航属性
(十九)多表查询
(二十)多表查询 WhereCascade
(二十一)查询返回数据
(二十二)Dto 映射查询
(二十三)分组、聚合
(二十四)Linq To Sql 语法使用介绍
(二十五)延时加载
(二十六)贪婪加载 Include、IncludeMany、Dto、ToList
(二十七)将已写好的 SQL 语句,与实体类映射进行二次查询
(二十八)事务
(二十九)Lambda 表达式
(三十)读写分离
(三十一)分区分表
(三十二)Aop
(三十三)CodeFirst 类型映射
(三十四)CodeFirst 迁移说明
(三十五)CodeFirst 自定义特性
转载于:https://www.cnblogs.com/FreeSql/p/11531362.html
FreeSql (十九)多表查询相关推荐
- FreeSql (二十)多表查询 WhereCascade
WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseCon ...
- 《Reids 设计与实现》第十九章 慢查询日志
<Reids 设计与实现>第十九章 慢查询日志 文章目录 <Reids 设计与实现>第十九章 慢查询日志 一.简介 二.慢查询记录的保存 三.慢查询日志的阅览和删除 四.添加新 ...
- 任务二十九:表单(一)单个表单项的检验
任务二十九:表单(一)单个表单项的检验 面向人群: 初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度 ...
- C1认证学习十八、十九(表单元素、转义字符)
C1认证学习十八.十九(表单元素.语义化标签) 十八 任务背景 HTML的表单用于收集用户的输入,表单元素是指的不同类型的input元素,复选框,单选按钮,提交按钮等等. 任务目标 掌握表单标签以及其 ...
- 2021年青岛十九中高考成绩查询,2021年青岛高中录取分数线是多少及高中排名榜...
2020年青岛的高中录取分数线都已经公布,以下是小编给大家整理的汇总信息,仅供参考. 一.2020年青岛高中录取分数线是多少 市南区学校 青岛第一中学自招批295.5,普通批315 青岛三十九中自招批 ...
- 2021年青岛十九中高考成绩查询,2021年青岛高中学校排名一览表,青岛比较好的高中学校排名...
在家长眼里,孩子能上一所好的高中,就意味着一只脚迈进了名牌大学的校门,下面是2020年青岛高中学校排名一览表,仅供参考. 1.山东省青岛第二中学 山东省青岛第二中学,学校建于 1925年,1953年被 ...
- springmvc十九:springmvc表单标签
1. Spring提供的轻量级标签库 2.可在JSP页面中渲染HTML元素的标签 3 用法 1)必须在JSP页面的开头处声明taglib指令 <%@ taglib prefix="fm ...
- htmlcss实例小项目_HTMLCSS学习笔记(十九)-- 媒体查询
媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于检测的媒体 ...
- SQL语言之DQL语言学习(九)多表查询/链接查询 SQL99学习
语法 select 查询列 表 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 #where 筛选条件 #group by 分组 #having 筛选条件 #order by ...
- 数据库(十)-单表查询(1)条件查询
在对数据库进行查询时使用WHERE关键字,指明WHERE后面的查询子句,被称为条件查询我们可以使用一系列运算以及关键字完成操作: 算术运算符+.-.*./.%:比较运算符包括=.!=.<> ...
最新文章
- boost::smart_ptr模块boost/pointer_cast.hpp 的测试
- 模型评估准确率、召回率、ROC曲线、AUC总结
- 爬去哪儿网5A景点评论
- 小程序和app用什么样的服务器,小程序和APP的本质区别是什么?哪个更值得开发?...
- java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务
- python计算汽车的平均油耗_用python对汽车油耗进行数据分析
- NLP十大研究方向Highlights!
- java 仿qq登录界面7.1_安卓开发学习笔记(七):仿写腾讯QQ登录注册界面
- 百度自动提交链接的php应用seo功能实例
- 为什么要拆分warning_repaired表?
- 七个你一定会犯的云安全错误
- 【matlab】元胞数组的创建
- python通过GUI 界面搭建实现嵌套功能_搭建系统|升级基于财务数据的选股工具!从清单中剔除ST股和次新股...
- 微信小程序前端框架/UI组件
- 小学生必积累的名人名言汇总100条
- 「镁客早报」詹克团、吴忌寒或将卸任比特大陆CEO;特斯拉任命两位新独立董事... 1
- vivo电池损耗指令代码_「值得收藏」手机上的神奇代码,除了*#*#6485#*#*,还有这些...
- pip install lap出现问题
- 孙立平:绝望比贫穷更可怕(转载)
- 王道书P41 T21(单链表实现)
热门文章
- 【编译原理】为什么编程语言中,标识符不能以数字开头?
- 安卓手机挂载Linux,android 挂载NFS教程
- php后静态绑定,详解PHP后期静态绑定分析与应用
- 【机器学习】 - 使用dlib进行人脸定位,人脸检测,给人脸图片戴口罩
- 【CodeForces - 195A】Let's Watch Football (追及问题,模拟)
- 详解道路标记数据集 CeyMo: See More on Roads -- A Novel Benchmark Dataset for Road Marking Detection
- 3.2)深度学习笔记:机器学习策略(2)
- linux内核镜像sd卡,【原创】Linux QT镜像的制作--制作SD卡启动盘
- mysql单表简单排序查询
- 16进制加法 keil_C/C++编程笔记:C语言进制详解,二进制、八进制和十六进制