当前位置: 首页 > news >正文

代做土木工程专业毕业设计网站企业网站建设项目计划书

代做土木工程专业毕业设计网站,企业网站建设项目计划书,精品毛卡卡1卡2卡3麻豆,ruhe用dw做网站postgresql 的递归查询功能很强大#xff0c;可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢#xff1f;在递归查询中#xff0c;我们一般会用到 union 或者 union all#xff0c;他们两者之间的区别是什么呢#xff1f; 递归查询的执行逻辑 递归查询的…postgresql 的递归查询功能很强大可以实现传统 sql 无法实现的事情。那递归查询的执行逻辑是什么呢在递归查询中我们一般会用到 union 或者 union all他们两者之间的区别是什么呢 递归查询的执行逻辑 递归查询的基本语法如下 WITH RECURSIVE ctename AS (SELECT /* non-recursive branch, cannot reference ctename */UNION [ALL]SELECT /* recursive branch referencing ctename */ ) SELECT ... FROM ctename ... 其本身也是一个CTE可以将复杂的查询逻辑进行分离让整个查询的逻辑更加清晰。对于递归查询而言分为两部分 非递归部分。即例子中的 UNION [ALL] 的上半部分递归部分。即例子中的 UNION [ALL] 的下半部分 递归查询的逻辑如下 计算非递归部分其结果将作为递归查询的数据集也是初始数据集在第一步计算出来的数据上执行递归部分新查询出的数据将作为下次递归执行的数据集。也就是说每次递归使用的数据集都是上次递归的结果直到没有新的数据产生后递归结束将每一次递归的数据进行聚合就拿到了最终的数据集 UNION 和 UNION ALL UNION: 会将本次递归查询到的数据进行内部去重也会和之前递归查询出的数据进行去重UNION ALL: 不会对数据进行去重 举个例子 // 创建表 create table document_directories (id bigserial not null,name text not null,created_at timestamp with time zone default CURRENT_TIMESTAMP not null,updated_at timestamp with time zone default CURRENT_TIMESTAMP not null,parent_id bigint default 0 not null );// 插入示例数据有两条数据是一样的 INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (1, 中国, 2020-03-28 15:55:27.137439, 2020-03-28 15:55:27.137439, 0); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (2, 上海, 2020-03-28 15:55:40.894773, 2020-03-28 15:55:40.894773, 1); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (3, 北京, 2020-03-28 15:55:53.631493, 2020-03-28 15:55:53.631493, 1); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (4, 南京, 2020-03-28 15:56:05.496985, 2020-03-28 15:56:05.496985, 1); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (5, 浦东新区, 2020-03-28 15:56:24.824672, 2020-03-28 15:56:24.824672, 2); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (6, 徐汇区, 2020-03-28 15:56:39.664924, 2020-03-28 15:56:39.664924, 2); INSERT INTO public.document_directories (id, name, created_at, updated_at, parent_id) VALUES (6, 徐汇区, 2020-03-28 15:56:39.664924, 2020-03-28 15:56:39.664924, 2); 使用 UNION ALL 进行数据查询 with recursive sub_shanghai as (select id, name, parent_idfrom document_directorieswhere id2union allselect dd.id, dd.name, dd.parent_idfrom document_directories ddjoin sub_shanghai on dd.parent_idsub_shanghai.id)select * from sub_shanghai; 结果如下 使用 UNION 进行查询 with recursive sub_shanghai as (select id, name, parent_idfrom document_directorieswhere id2unionselect dd.id, dd.name, dd.parent_idfrom document_directories ddjoin sub_shanghai on dd.parent_idsub_shanghai.id)select * from sub_shanghai; 得到结果如下 我们修改下原始数据再看下去重逻辑的区别 update document_directories set parent_id 2 where id2; 当我们使用 UNION 进行递归查询时结果并没有发生变化。但是当我们使用 UNION ALL 进行查询时会一直执行。这是因为 UNION ALL 不会将数据进行去重而每次递归查询的时候总归能查询到 {id: 5, name:上海, parent_id: 2} 这条数据所以递归就没有终止条件。 从而也验证了UNION 不但会将本次递归查询的数据进行内部去重也会和之前的递归结果进行去重。
http://www.dnsts.com.cn/news/117326.html

相关文章:

  • 海关企业信息查询网站wordpress管理插件下载
  • 网站群建设原则网站域名 空间
  • 网站的模块韩国手做配件网站
  • 上海免费网站建设品牌大庆市建设局网站
  • 聊城网站开发公司南宁企业网站设计
  • 圣诞网站怎么做做毕设的网站万
  • aso优化是什么意思优化seo搜索排名
  • 蕲春县住房和城乡建设局网站网络市场营销的概念
  • 自助建设手机网站如何自己编写一个程序
  • 电商法规定企业网站必须做3年买了域名之后怎么建设网站
  • 站长统计网站统计PHP 网站开发 入门
  • 全球热门网站排名菜单 wordpress
  • php网站开发cms网站优化推广排名
  • 网站个人信息页面布局优秀网页设计代码
  • 网站建设的行业手机应用市场下载安装到手机
  • 你学做网站学了多久建网站 免费
  • 网站建设需要学习哪些常州市教育基本建设与装备管理中心网站
  • 做网站购买虚拟主机送模板吗用源码做网站
  • 济南网站开发企业wordpress 多标签插件
  • 将电脑做的网站放到外网建设银行江苏官网招聘网站
  • 电子商务网站建设评估工具图片分享网站建设
  • wordpress首页添加站点统计显示临沂的各类网站建设
  • 政协机关网站建设wordpress ico更改
  • 关键词分析工具网站网站前端建设
  • 服务周到的上海网站建设长春seo外包平台
  • 网站建设综合训练报告网站建设单位是什么意思
  • 营销型的网站域名和各大网站做视频的工作
  • 强大的网站设计制作赣州章贡区最新招聘信息
  • 郑州工程建设信息网站网易企业邮箱登录登录入口网页版
  • 网站自定义代码河南企业做网站