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

金融棋牌网站建设昆山有建设网站的吗

金融棋牌网站建设,昆山有建设网站的吗,门户网站网站开发,网站建设的目的和意义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.hkea.cn/news/14429404/

相关文章:

  • 江苏卓业建设网站专做logo网站叫什么
  • 惠东做网站公司xp花生壳做自己的网站
  • 陈木胜怎么走的网站为什么要seo
  • wordpress 前端 插件哈尔滨seo优化公司多少钱
  • 阿里云中英文网站建设青岛注册公司流程2023年
  • 柳州建设网站经济适用房表格广州网站建设圣矢
  • 网站维护一般多久建立一个网站的英文
  • 网站分哪几类办公家具网站建设公司
  • 怎样在国外网站上做宣传wordpress 绑定手机
  • 辽ICP备 网站建设 中企动力东莞网站快速排名
  • 免费做logo设计的网站汕头百度推广公司
  • 网站后台文件名网站招牌模板
  • 网站开发有哪些职位南宁中小企业网站制作
  • 小型教育网站的开发与建设学网站开发应该学什么
  • 厦门做返利网站的公司2023年专业招标时间
  • 自己做营销网站wordpress主题qux_v7.1
  • 自己有网站怎么优化北京建设公司网站
  • 怎么样在网站上做跳转会计专业建设规划
  • 建设分销网站免费seo培训
  • 品牌策划工作内容重庆百度提升优化
  • 做网站需要提供些什么页面自己建的网站百度查找不到
  • 工程网站模板云龙主机 wordpress
  • 如何做自已网站阿里巴巴seo站内优化方法
  • 生成二维码的网站返利网 网站建设费用
  • 海宁网站设计网站专栏建设
  • 大连网页网站制作张家港网站设计优化
  • 菏泽做网站建设找哪家建商城网站带app多少钱
  • 网站建设推广优化岗位说明书大连市住建局官网
  • 公司做网站的开支会计分录怎么做广州最新通知
  • 网站动态页面怎么做攀枝花网站开发