PostgreSQL递归查询、模糊查询等问题记录,持续更新中.....

2 篇文章 0 订阅
1 篇文章 0 订阅

1.PostgreSQL的sql语句对大小写要求严格,如果表名是大写字母组成的,在写SQL是必须使用大写字母,不像mysql那样的灵活,另外还必须使用双引号将表名和字段名括起来,参数值用单引号括起,举例:表名T_TEST,其中的字段名ID、NAME,SEX,AGE则按SEX查询的SQL为:SELECT  "ID","NAME","SEX","AGE" FROM "T_TEST" WHERE "SEX"='男'。

2.模糊查询LIKE的使用,LIKE的使用需要用到 “||” ,举例:"NAME" LIKE '%'||#{name}||'%',注意:pgsql的LIKE支持int等数据类型,如果要进行这些类型的模糊查询,必须得转换一下类型,转成varchar类型,举例:"AGE"::TEXT LIKE '%'||#{age}||'%'。

3.记录一条递归查询的SQL:

WITH RECURSIVE "MT" ( "id", "parentId" ) AS (

SELECT "id", "parentId"  FROM "DT_B_ADCD"  WHERE "id" ='610000'

UNION ALL

SELECT m2."id",m2."parentId" FROM "DT_B_ADCD" m2,"MT" m3  WHERE m3."id" = m2."parentId"  )

SELECT "id" FROM "MT" 

说明:

(1).“RECURSIVE” 是PostgreSQL的关键字不是具体存在的表;

(2).第一行中的:"("id","parentId")"定义的是虚拟MT表的参数,字段的名称可随意,但字段的个数一定要与2~4行中的查询结果的个数一致!

(3).第二行中的id='610000'是需要查询开始层的ID,关键是第四行需要将虚拟表“MT"表与“DT_B_ADCD”实体表连表查询;

(4).特别需要注意的是第四行中的中的where条件(m3.id=m2.parentId) ,取虚拟表的id和实体表parentId连,这个条件决定了当前递归查询的查询方式(向上查询还是向下查询);

 

边用边记录,持续更新中...................

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值